在表 orders 中找到订单数最多客户对应的 customer_number 。
数据保证订单数最多的顾客恰好只有一位。
表 orders 定义如下:
Column | Type |
---|---|
order_number (PK) | int |
customer_number | int |
order_date | date |
required_date | date |
shipped_date | date |
status | char(15) |
comment | char(200) |
样例输入
order_number | customer_number | order_date | required_date | shipped_date | status | comment |
---|---|---|---|---|---|---|
1 | 1 | 2017-04-09 | 2017-04-13 | 2017-04-12 | Closed | |
2 | 2 | 2017-04-15 | 2017-04-20 | 2017-04-18 | Closed | |
3 | 3 | 2017-04-16 | 2017-04-25 | 2017-04-20 | Closed | |
4 | 3 | 2017-04-18 | 2017-04-28 | 2017-04-25 | Closed |
样例输出
customer_number |
---|
3 |
思路:
不考虑并列:
直接按照用户分组, count(1)订单, desc排序, limit 1 输出
考虑并列:
先查询到最多的订单数量, 在通过having count(*)=最多的订单数量
题解:
不考虑并列:
# Write your MySQL query statement below
select customer_number from orders
group by customer_number
order by count(1) desc
limit 1
考虑到并列的情况:
select customer_number from orders group by customer_number
having count(*)=(
select count(*) as c from orders
group by customer_number order by c desc limit 1)