586. Customer Placing the Largest Number of Orders

发布时间 2024-01-02 07:29:15作者: 我是球啊

参考官方题解: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
;
  1. SELECT customer_number: 这部分指定了查询结果中要显示的列,即客户的唯一标识 customer_number

  2. FROM orders: 指定了查询的数据来源,即名为 orders 的表。

  3. GROUP BY customer_number: 这是一个分组操作,将数据按照 customer_number 列的值进行分组。这意味着每个客户的订单将被分到一个组中。

  4. ORDER BY COUNT(*) DESC: 这是排序操作,按照每个分组中订单的数量(使用 COUNT(*) 计算)降序排列。DESC表示降序,从订单数量最多的开始排序。

  5. LIMIT 1: 限制返回的结果集只包含一行。由于之前已经按订单数量降序排列,所以 LIMIT 1 将选择具有最多订单数量的客户。