.
.
求出各科成绩前三名的学生和成绩,与相应的课程。

正确的解法一:

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面试】求出各科成绩前三名的学生和成绩相关推荐

  1. python计算选手最后得分并取出前三名_MySQL中查询获取每个班级成绩前三名的学生信息...

    今天有同事说到了怎么MySQL中查询获取每个班级成绩前三名的学生信息,在网上查了查,然后写出代码,很快就OK了. CREATE TABLE t_testscore(    pk_id INT PRIM ...

  2. mysql查询班级作业提交情况_MySQL中查询获取每个班级成绩前三名的学生信息

    标签: 今天有同事说到了怎么MySQL中查询获取每个班级成绩前三名的学生信息,在网上查了查,然后写出代码,很快就OK了. CREATE TABLE t_testscore(    pk_id INT ...

  3. MySQL中查询获取每个班级成绩前三名的学生信息

    CREATE TABLE t_testscore( pk_id INT PRIMARY KEY, c_name VARCHAR(50) , c_score INT, c_class INT )DEFA ...

  4. sql查询成绩最高分_sql查询各科成绩前三名----详述过程,思路清晰不烧脑!

    一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...

  5. mysql查询各科成绩前三名的记录,sql查询各科成绩前三名----详述过程,思路清晰不烧脑...

    使用mysql.hive查询各科成绩前三名 一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), scor ...

  6. sql查询各科成绩前三名----详述过程,思路清晰不烧脑!

    一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...

  7. MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...

    MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) 我的表结构: 先放代码 -- 查询各科成绩前三名的记录(不考虑成绩并列情 ...

  8. Mysql查询各科成绩前三名并分别排序

    Mysql查询各科成绩前三名并分别排序 这个问题是之前1个朋友学mysql他们老师布置的作业,一开始我没有做过,而且刚出来做开发很多学过的东西都忘记了. 表结构如下: 一开始我是这样写的: selec ...

  9. 【sql随笔】sql题目:查询每班成绩前三名

    实验题目:查询每班成绩前三名的信息 实验数据库:Oracle 实验数据:学生-成绩表(id,学生名,班级名,分数) 建表语句: 15笔数据,俩个班. create table OnePiece_SC ...

  10. 《JAVA练习题目2》 输入十个学生的考试成绩,将及格学生的成绩从高到低排序输出。

    题目内容: 输入十个学生的考试成绩,将及格学生的成绩从高到低排序输出. 输入格式: 10个学生的成绩,以空格分割. 输出格式: 及格成绩从高到低,成绩之间用空格分隔,最后一个分数后面也有一个空格.如果 ...

最新文章

  1. datanode无法启动问题
  2. lintcode 中等题:Single number III 落单的数III
  3. Android控件Gallery3D效果
  4. 实验十 团队作业6:团队项目系统设计改进与详细设计
  5. 简易 MVC框架 弃坑
  6. react 类暴露_react如何将组件内部的方法暴露给外部
  7. 好程序员Web前端分享一些小知识!
  8. java编程简单网络_Java网络编程之使用Socket搭建一个简易聊天室
  9. 提权学习:第三方软件提权(FlashFXP 替换文件漏洞提权)
  10. 如何把wav转换为mp3?
  11. 共享单车调度_原来你是这样的共享单车调度员:每天抬1万斤,走2万多步
  12. Led台灯对眼睛好吗?2022双十一不伤眼的护眼灯推荐
  13. 基于Unity3D的相机功能的实现(六)—— 上帝视角(王者荣耀视角)
  14. 厦门集体户口攻略(组图)
  15. 从容淡定的女人最美丽
  16. UCOSIII---共享资源
  17. 三个线程轮流执行顺序打印ABC
  18. linux 大文件按照大小切割,关于linux系统下分割大文件的方法
  19. Oracle 常用字符函数
  20. Actix Web SQLx 搭建 Web 后端服务

热门文章

  1. 【常用0x000000类型颜色代码表】
  2. 城市经纬度 json
  3. 计算机毕业设计java基于SSM超市订单管理系统
  4. 【JAVA】从0开始写DHT/磁力爬虫 05 INFOHASH转种子
  5. 两台电脑之间使用ntp做时间同步的总结
  6. 删除WPS 遗留的qingnse64XXX.dll
  7. ucfirst() 函数
  8. 纯css绘制斜线表头
  9. Android 进阶——系统启动之核心SystemServer进程启动详解(七)
  10. 计算机用户名uz,Dnuznq全国计算机二级考试vb试题.doc