【SQL26】查询订单数最多的客户(客户有可能超过一个)

表 orders 定义如下:order_id(订单编号),customer_id(客户编号),order_date(下单日期)

有如下几条记录:

order_id        customer_id         order_date
1               1                   2019-06-24
2               2                   2019-04-23
3               3                   2019-03-21
4               3                   2019-04-29
5               4                   2019-08-12
6               4                   2019-09-14

在表 orders 中找到订单数最多客户对应的 customer_id 。

预计的输出结果:

customer_id
3
4

解决:

SELECT customer_id
  FROM (
        SELECT customer_id
              ,c
              ,rank() over(order by c desc) as rk
          FROM (
                SELECT customer_id
                      ,count(*) AS c
                  FROM orders
                 GROUP BY customer_id
                 ORDER BY count(*) DESC
                ) a
        ) a
 WHERE rk = 1
;

备注:建表和数据
create table orders(order_id int,customer_id int,order_date datetime);
insert into orders values(1,1,'2019-06-24');
insert into orders values(2,2,'2019-04-23');
insert into orders values(3,3,'2019-03-21');
insert into orders values(4,3,'2019-04-29');
insert into orders values(5,4,'2019-08-12');
insert into orders values(6,4,'2019-09-14');

猜你喜欢

转载自blog.csdn.net/debimeng/article/details/104227452