2022年10月更文挑战30-2-leetcode刷题586-订单最多的客户

111 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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

image.png

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。