持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
leetcode刷题586-订单最多的客户
前文
本文内容为关于leetcode数据库类型题目刷题的文章,题目序号586,订单最多的客户。本题目主要考察对于数据库的查询操作,以及查询时对数据的筛选处理。本文中解题方案为个人思路,并非最佳解题方案。
题目内容
+-----------------+----------+
| Column Name | Type |
+-----------------+----------+
| order_number | int |
| customer_number | int |
+-----------------+----------+
Order_number是该表的主键。此表包含关于订单ID和客户ID的信息。编写一个SQL查询,为下了最多订单的客户查找 customer_number 。测试用例生成后, 恰好有一个客户比任何其他客户下了更多的订单。
题目分析
根据题目的要求,我们有了一张表订单信息表,表中包含订单的id以及该订单关联的客户id。而我们的目标,则是根据表中的信息,查询出订单数量最多的客户id。而想要实现该结果,本题采用的思路是首先查询出所有的客户所对应的订单数量,并将该结果作为实际的实际目标查询时所采用的临时表a。而在子查询中,我们直接依赖group by及进行分组处理,以客户id作为实际的分组字段,并查询每个客户所对应的订单数目。而实际外层的查询,则是直接将该子查询表作为数据源,并利用订单数目进行倒叙排序。排序后获取第一条数据中的客户id,也就实现了目标的查询订单数量最高的客户id。该方案主要是通过子查询的方式实现对于题目的解答。至此,题目内容解答完毕。
题目答案及结果
select a.customer_number from (
select count(0) as num,customer_number from Orders
group by customer_number
) a order by a.num desc limit 1
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。