表: 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 。
MySQL
首先,我们可以使用 GROUP BY 选择 customer_number 以及相应的订单数量。
SELECT
customer_number, COUNT(*)
FROM
orders
GROUP BY customer_number
customer_number COUNT(*)
然后,通过按订单数量降序排序它们,第一行的 customer_number 就是结果。
customer_number COUNT(*)
在 MySQL 中,LIMIT 子句可用于限制 SELECT 语句返回的行数。它接受一个或两个非负数值参数,第一个指定要返回的第一行的偏移量,第二个指定要返回的最大行数。初始行的偏移量为 0(不是 1)。
它可以与一个参数一起使用,该参数指定从结果集的开始返回的行数。因此,LIMIT 1 将返回第一条记录。
SELECT
customer_number
FROM
orders
GROUP BY customer_number
ORDER BY COUNT(*) DESC
LIMIT 1
;