列表

详情


1565. 按月统计订单数与顾客数

表:Orders

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| order_id      | int     |
| order_date    | date    |
| customer_id   | int     |
| invoice       | int     |
+---------------+---------+
order_id 是该表具有唯一值的列
这张表包含顾客(customer_id)所下订单的信息

 

写一个查询语句来 按月 统计金额(invoice)大于 $20 的唯一 订单数 和唯一 顾客数 。

查询结果无排序要求。

查询结果格式如下所示。

 

示例 1:

输入:
Orders
+----------+------------+-------------+------------+
| order_id | order_date | customer_id | invoice    |
+----------+------------+-------------+------------+
| 1        | 2020-09-15 | 1           | 30         |
| 2        | 2020-09-17 | 2           | 90         |
| 3        | 2020-10-06 | 3           | 20         |
| 4        | 2020-10-20 | 3           | 21         |
| 5        | 2020-11-10 | 1           | 10         |
| 6        | 2020-11-21 | 2           | 15         |
| 7        | 2020-12-01 | 4           | 55         |
| 8        | 2020-12-03 | 4           | 77         |
| 9        | 2021-01-07 | 3           | 31         |
| 10       | 2021-01-15 | 2           | 20         |
+----------+------------+-------------+------------+
输出:
+---------+-------------+----------------+
| month   | order_count | customer_count |
+---------+-------------+----------------+
| 2020-09 | 2           | 2              |
| 2020-10 | 1           | 1              |
| 2020-12 | 2           | 1              |
| 2021-01 | 1           | 1              |
+---------+-------------+----------------+
解释:
在 2020 年 09 月有 2 份来自 2 位不同顾客的金额大于 $20 的订单
在 2020 年 10 月有 2 份来自 1 位顾客的订单并且只有其中的 1 份订单金额大于 $20 
在 2020 年 11 月有 2 份来自 2 位不同顾客的订单但由于金额都小于 $20 所以我们的查询结果中不包含这个月的数据
在 2020 年 12 月有 2 份来自 1 位顾客的订单且 2 份订单金额都大于 $20
在 2021 年 01 月有 2 份来自 2 位不同顾客的订单但只有其中一份订单金额大于 $20 

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

mysql 解法, 执行用时: 833 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 15:35:12

# Write your MySQL query statement below
SELECT DATE_FORMAT(order_date, '%Y-%m') AS 'month',
    COUNT(order_id) AS 'order_count',
    COUNT(DISTINCT customer_id) AS 'customer_count'     #不同顾客
FROM Orders
WHERE invoice > 20                                      #金额大于20
GROUP BY DATE_FORMAT(order_date, '%Y-%m')               #按月份分组
;

上一题