该题目来源于力扣:

586. 订单最多的客户 - 力扣(LeetCode)

题目要求:

表: Orders

+-----------------+----------+
| Column Name     | Type     |
+-----------------+----------+
| order_number    | int      |
| customer_number | int      |
+-----------------+----------+
在 SQL 中,Order_number是该表的主键。
此表包含关于订单ID和客户ID的信息。

查找下了 最多订单 的客户的 customer_number 。

测试用例生成后, 恰好有一个客户 比任何其他客户下了更多的订单。

查询结果格式如下所示。

示例 1:

输入: 
Orders 表:
+--------------+-----------------+
| order_number | customer_number |
+--------------+-----------------+
| 1            | 1               |
| 2            | 2               |
| 3            | 3               |
| 4            | 3               |
+--------------+-----------------+
输出: 
+-----------------+
| customer_number |
+-----------------+
| 3               |
+-----------------+
解释: 
customer_number 为 '3' 的顾客有两个订单,比顾客 '1' 或者 '2' 都要多,因为他们只有一个订单。
所以结果是该顾客的 customer_number ,也就是 3 。

思路解释:

我们可能会想到:

max(count(distinct customer_number))

可这是错误的,语法错误。如果再MySQL中想查询最大或最小值,可以利用先排序再展示要求的数据即可。将数据按照customer_number列进行分组,然后统计分组后customer_number列的频数,升序排序,最后再limit的分页参数里输入你要查询的前几个数据

代码实现:

# Write your MySQL query statement below
select customer_number 
from Orders
group by  customer_number 
order by count(customer_number) DESC
limit 1;

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部