一、题目
已知order表:
二、思路
如果最多订单数只有一个客户,那就可以直接粗暴的分组后计算每组个数,然后排序求第一个。
SELECT customer_number
FROM orders
GROUP BY customer_number
ORDER BY COUNT(*) DESC
LIMIT 1;
但如果是有并列客户同时最多订单数,则先找出最大订单数的数值,然后用Having
子查询求众数。
三、代码
# Write your MySQL query statement below
SELECT customer_number
FROM orders
GROUP BY customer_number
HAVING COUNT(*) >= (
SELECT COUNT(*) AS cnt
FROM orders
GROUP BY customer_number
ORDER BY cnt DESC
LIMIT 1
);
Reference
[1] SQL实例:求众数
[2] SQL实例:查找两个表中相同的行
[3] 一文搞懂SQL-计算众数、中位数
[4] SQL求众数、中值(Having)