题目:
提示:这里简述项目相关背景:
编写一个SQL查询,为下了 最多订单 的客户查找 customer_number 。
测试用例生成后, 恰好有一个客户 比任何其他客户下了更多的订单。
查询结果格式如下所示。
输入:
Orders 表:
+--------------+-----------------+
| order_number | customer_number |
+--------------+-----------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 3 |
+--------------+-----------------+
输出:
+-----------------+
| customer_number |
+-----------------+
| 3 |
+-----------------+
解释:
customer_number 为 '3' 的顾客有两个订单,比顾客 '1' 或者 '2' 都要多,因为他们只有一个订单。
所以结果是该顾客的 customer_number ,也就是 3 。
CODE
提示:这里描述项目中遇到的问题:
方法一:先看我的foolish🐖写法
SELECT a.customer_number
FROM (
SELECT customer_number, COUNT(*) AS ct
FROM Orders
GROUP BY customer_number
) AS a
WHERE a.ct IN (
SELECT MAX(a.ct)
FROM (
SELECT customer_number, COUNT(*) AS ct
FROM Orders
GROUP BY customer_number
) AS a
)
方法二:LIMIT 1函数求最大最小值(优雅美丽)
SELECT customer_number
FROM Orders
GROUP BY customer_number
ORDER BY COUNT(*) desc
LIMIT 1
总结:
熟能生巧
下次求最大最小值,不一定非要用MAX()
或MIN()
,有时候排序 + LIMIT
也有奇效。