【SQL面试】求出各科成绩前三名的学生和成绩
.
.
求出各科成绩前三名的学生和成绩,与相应的课程。
正确的解法一:
select a.*
from score as a
left join score as b
on (a.sourceid = b.sourceid) and (a.score < b.score)
group by a.sourceid, a.userid, a.score
having count(a.userid) < 3
order by a.sourceid, a.score desc
正确的解法二:
select * from score as a where
(select count(*) from score as b where a.sourceid = b.sourceid and a.score < b.score) < 3
order by a.sourceid, a.score desc;
这样是错误解法(多加了 a.userid=b.userid):
select a.*
from score as a
left join score as b
on (a.sourceid = b.sourceid) and (a.userid = b.userid) and (a.score < b.score)
group by a.sourceid, a.userid, a.score
having count(a.userid) < 3
order by a.sourceid, a.score desc
附:建表并导入数据:
# 创建表
CREATE TABLE `score` (`scoreid` int(11) NOT NULL AUTO_INCREMENT,`sourceid` varchar(11) DEFAULT NULL,`userid` varchar(11) DEFAULT NULL,`score` int(11) DEFAULT NULL,PRIMARY KEY (`scoreid`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;# 插入数据
insert into `score`(`scoreid`,`sourceid`,`userid`,`score`) values (1,1,1,60),(2,2,1,80),(3,3,1,95),(4,1,2,75),(5,2,2,85),(6,3,2,90),(7,4,1,89),(8,4,2,88),(9,1,3,78),(10,2,3,87),(11,3,3,98),(12,4,3,76),(13,1,4,67),(14,2,4,76),(15,3,4,88),(16,4,4,77);
参考:
mysql巧用连表查询各科成绩前三名
查询各科成绩前3和第3的学生
【SQL面试】求出各科成绩前三名的学生和成绩相关推荐
- python计算选手最后得分并取出前三名_MySQL中查询获取每个班级成绩前三名的学生信息...
今天有同事说到了怎么MySQL中查询获取每个班级成绩前三名的学生信息,在网上查了查,然后写出代码,很快就OK了. CREATE TABLE t_testscore( pk_id INT PRIM ...
- mysql查询班级作业提交情况_MySQL中查询获取每个班级成绩前三名的学生信息
标签: 今天有同事说到了怎么MySQL中查询获取每个班级成绩前三名的学生信息,在网上查了查,然后写出代码,很快就OK了. CREATE TABLE t_testscore( pk_id INT ...
- MySQL中查询获取每个班级成绩前三名的学生信息
CREATE TABLE t_testscore( pk_id INT PRIMARY KEY, c_name VARCHAR(50) , c_score INT, c_class INT )DEFA ...
- sql查询成绩最高分_sql查询各科成绩前三名----详述过程,思路清晰不烧脑!
一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...
- mysql查询各科成绩前三名的记录,sql查询各科成绩前三名----详述过程,思路清晰不烧脑...
使用mysql.hive查询各科成绩前三名 一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), scor ...
- sql查询各科成绩前三名----详述过程,思路清晰不烧脑!
一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...
- MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...
MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) 我的表结构: 先放代码 -- 查询各科成绩前三名的记录(不考虑成绩并列情 ...
- Mysql查询各科成绩前三名并分别排序
Mysql查询各科成绩前三名并分别排序 这个问题是之前1个朋友学mysql他们老师布置的作业,一开始我没有做过,而且刚出来做开发很多学过的东西都忘记了. 表结构如下: 一开始我是这样写的: selec ...
- 【sql随笔】sql题目:查询每班成绩前三名
实验题目:查询每班成绩前三名的信息 实验数据库:Oracle 实验数据:学生-成绩表(id,学生名,班级名,分数) 建表语句: 15笔数据,俩个班. create table OnePiece_SC ...
- 《JAVA练习题目2》 输入十个学生的考试成绩,将及格学生的成绩从高到低排序输出。
题目内容: 输入十个学生的考试成绩,将及格学生的成绩从高到低排序输出. 输入格式: 10个学生的成绩,以空格分割. 输出格式: 及格成绩从高到低,成绩之间用空格分隔,最后一个分数后面也有一个空格.如果 ...
最新文章
- datanode无法启动问题
- lintcode 中等题:Single number III 落单的数III
- Android控件Gallery3D效果
- 实验十 团队作业6:团队项目系统设计改进与详细设计
- 简易 MVC框架 弃坑
- react 类暴露_react如何将组件内部的方法暴露给外部
- 好程序员Web前端分享一些小知识!
- java编程简单网络_Java网络编程之使用Socket搭建一个简易聊天室
- 提权学习:第三方软件提权(FlashFXP 替换文件漏洞提权)
- 如何把wav转换为mp3?
- 共享单车调度_原来你是这样的共享单车调度员:每天抬1万斤,走2万多步
- Led台灯对眼睛好吗?2022双十一不伤眼的护眼灯推荐
- 基于Unity3D的相机功能的实现(六)—— 上帝视角(王者荣耀视角)
- 厦门集体户口攻略(组图)
- 从容淡定的女人最美丽
- UCOSIII---共享资源
- 三个线程轮流执行顺序打印ABC
- linux 大文件按照大小切割,关于linux系统下分割大文件的方法
- Oracle 常用字符函数
- Actix Web SQLx 搭建 Web 后端服务