586. Customer Placing the Largest Number of Orders
参考官方题解:https://leetcode.cn/problems/customer-placing-the-largest-number-of-orders/solutions/2366301/ding-dan-zui-duo-de-ke-hu-by-leetcode-so-bywe/
首先我们可以使用group by选择customer_number以及相应的订单数量。
SELECT customer_number, COUNT(*) FROM orders GROUP BY customer_number
注意,此处的COUNT(*)返回了每个分组的行数,也就是订单的数量。
然后通过订单数量降序排列,第一行的customer_number就是我们想要的结果。在MySQL中,LIMIT子句用于限制SELECT语句返回的行数。它接受一个或者两个非负数值参数,第一个指定要返回的第一行的偏移量,第二个指定要返回的最大的行数。初始行的偏移量是0(不是1)。
它可以和一个参数一起使用,该参数指定从结果集的开始返回的行数。因此,LIMIT 1将返回第一条记录。
SELECT customer_number FROM orders GROUP BY customer_number ORDER BY COUNT(*) DESC LIMIT 1 ;
-
SELECT customer_number
: 这部分指定了查询结果中要显示的列,即客户的唯一标识customer_number
。 -
FROM orders
: 指定了查询的数据来源,即名为orders
的表。 -
GROUP BY customer_number
: 这是一个分组操作,将数据按照customer_number
列的值进行分组。这意味着每个客户的订单将被分到一个组中。 -
ORDER BY COUNT(*) DESC
: 这是排序操作,按照每个分组中订单的数量(使用COUNT(*)
计算)降序排列。DESC
表示降序,从订单数量最多的开始排序。 -
LIMIT 1
: 限制返回的结果集只包含一行。由于之前已经按订单数量降序排列,所以LIMIT 1
将选择具有最多订单数量的客户。