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

简介: SQL数据库开发

问题描述

我们经常会遇到这样的问题,商品销量最多的商品,人流量最多的体育馆等等,他们都有一个共同的特征:就是需要求解出数量,但是会有并列的情况存在。比如有两种商品并列销量最高,有两个体育馆并列人流量最多等等。

具体案例

在表 order 中找到订单数最多客户对应的 customer_id(可能有多个)。表 orders 定义如下:order_id(订单编号),customer_id(客户编号),order_date(下单日期) 有如下几条记录:

30.jpg

输出结果:

31.jpg

解释:因为customer_id为3,4的客户都有2条购买记录,这样求最大值时他们都满足,所以要一起显示出来。
案例分析

像这种求解并列最多的,我们的思路一般是先求出数量中的一条最大值,然后通过子查询,来获取表中不同客户的订单数量,与最大值相等的记录。这样就同时满足了最大值和并列的要求。具体解法如下:

SELECT
customer_id
FROM
Orders
GROUP BY
customer_id
HAVING
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的解法留给小伙伴们去尝试一下。

相关文章
|
5月前
|
SQL 数据库
SQL面试50题------(初始化工作、建立表格)
这篇文章提供了SQL面试中可能会遇到的50道题目的建表和初始化数据的SQL脚本,包括学生、教师、课程和成绩表的创建及数据插入示例。
SQL面试50题------(初始化工作、建立表格)
|
8月前
|
SQL 关系型数据库 MySQL
MYSQL-SQL语句性能优化策略以及面试题
MYSQL-SQL语句性能优化策略以及面试题
150 1
|
5月前
|
SQL
sql面试50题------(1-10)
这篇文章提供了SQL面试中的前10个问题及其解决方案,包括查询特定条件下的学生信息、教师信息和课程成绩等。
sql面试50题------(1-10)
|
2月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
5月前
|
SQL
sql面试50题------(11-20)
这篇文章提供了SQL面试中的50道题目,其中详细解释了11至20题,包括查询与学号为“01”的学生所学课程相同的学生信息、不及格课程的学生信息、各科成绩统计以及学生的总成绩排名等问题的SQL查询语句。
|
5月前
|
SQL
sql面试50题------(21-30)
这篇文章是SQL面试题的21至30题,涵盖了查询不同老师所教课程的平均分、按分数段统计各科成绩人数、查询学生平均成绩及其名次等问题的SQL查询语句。
sql面试50题------(21-30)
|
6月前
|
存储 SQL 索引
面试题MySQL问题之使用SQL语句创建一个索引如何解决
面试题MySQL问题之使用SQL语句创建一个索引如何解决
62 1
|
7月前
|
SQL 大数据
常见大数据面试SQL-每年总成绩都有所提升的学生
一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题: 问题1:每年每门学科排名第一的学生 问题2:每年总成绩都有所提升的学生
|
7月前
|
SQL 关系型数据库 MySQL
sql面试题库
sql面试题库
|
6月前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
84 0