暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL面试题:如何求解数量并列最多的问题?

SQL数据库开发 2020-05-18
1389
点击上方SQL数据库开发,关注获取SQL视频教程

SQL专栏

SQL数据库基础知识汇总
SQL数据库高级知识汇总
问题描述
我们经常会遇到这样的问题,商品销量最多的商品,人流量最多的体育馆等等,他们都有一个共同的特征:就是需要求解出数量,但是会有并列的情况存在。比如有两种商品并列销量最高,有两个体育馆并列人流量最多等等。
具体案例
在表 order 中找到订单数最多客户对应的 customer_id(可能有多个)。表 orders 定义如下:order_id(订单编号),customer_id(客户编号),order_date(下单日期) 有如下几条记录:
输出结果:
解释:因为customer_id为3,4的客户都有2条购买记录,这样求最大值时他们都满足,所以要一起显示出来。
案例分析
像这种求解并列最多的,我们的思路一般是先求出数量中的一条最大值,然后通过子查询,来获取表中不同客户的订单数量,与最大值相等的记录。这样就同时满足了最大值和并列的要求。具体解法如下:
SELECT customer_idFROM OrdersGROUP BY customer_idHAVING COUNT (customer_id) = ( --用=来分组筛选出符合最大数量的客户ID SELECT TOP 1 COUNT (customer_id) --TOP 1取出一条最大数量 FROM Orders GROUP BY customer_id ORDER BY COUNT (customer_id) DESC )

(提示:可以左右滑动代码)

以上是SQL Server的解法,MySQL和Oracle的解法留给小伙伴们去尝试一下。

——End——

后台回复关键字:1024,获取一份精心整理的技术干货

后台回复关键字:进群,带你进入高手如云的交流群。

推荐阅读

这是一个能学到技术的公众号,欢迎关注
点击「阅读原文」了解SQL训练营
最后修改时间:2020-05-19 08:18:42
文章转载自SQL数据库开发,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论