实现按a字段分组后,在组内再按照b字段排序,之后每组取Top n条数据
来源:互联网 发布:万方数据库怎么收费 编辑:程序博客网 时间:2024/04/30 13:22
题目:
S表(Sid,Sname)为学生表,C表(Cid,Cname,Cteacher)为课程表,SC表(Sid,Cid,Scgrade)为选课关系表。其中,Sid为学号,Sname为姓名,Cid为课程号,Cname为课程名,Cteacher为任课教师,Scgrade为学生成绩。 请用SQL语言实现: 列出每门课程成绩最好的两位学生的课程名称,姓名,成绩。
-----------------------------方法一
select * from
(select * from
sc as a where (select Count(*) from sc as b where a.cid=b.cid and b.scgrade>=a.scgrade) <=2 ) as aa,s,c where s.sid=aa.sid and c.cid =aa.cid order by aa.cid
-----------------------------方法二
select * from
(select *,(select count(*) from sc as b where a.cid = b.cid and b.scgrade >= a.scgrade) as counts from sc as a ) as a1,s as a2,c as a3 where a1.sid=a2.sid and a1.cid=a3.cid and a1.counts<=2 order by a1.cid
----------------------------------------------------------
- 实现按a字段分组后,在组内再按照b字段排序,之后每组取Top n条数据
- 查询 按某一字段分组,组内排序,top n条数据
- MySQL分组然后取每个分组中按照某些字段排序的topN条数据
- row_number和partition by分组取top数据,每组查询前N条
- Oracle分组查询取每组排序后的前N条记录
- MySQL 查询分页数据中分组后取每组的前N条记录
- MySQL 查询分页数据中分组后取每组的前N条记录
- oracle 分组后取每组第一条数据
- oracle分组后取每组第一条数据
- oracle分组后取每组第一条数据
- oracle 分组后取每组第一条数据
- oracle 分组后取每组第一条数据
- oracle 分组后取每组第一条数据
- oracle 分组后取每组第一条数据
- MySql 按某一字段分组,同时取每组的前三行数据
- mysql 先按某字段分组再取每组中前N条记录
- [mysql] 先按某字段分组再取每组中前N条记录
- sql 分组取每组的前n条或每组的n%(百分之n)的数据
- 关于loose.dtd和xhtml1-transitional.dtd等文档类型定义模型中CSS失效的解决办法
- centos
- c语言中处理汉字问题
- transitional.dtd影响浮动效果的解决:改js代码中的document.body
- [SCHEMA小技巧]约束值域为0和正整数
- 实现按a字段分组后,在组内再按照b字段排序,之后每组取Top n条数据
- shipping point 定义和分配
- Python 运算符
- 招聘C++程序员
- 人生的成功必须是首先做一个真正的人
- 数组拆分后入库到临时表(数组-->数据集合)
- 关于_variant_t变量
- 带权有向图(最短路径算法Dijkstra算法)
- 冒险的精神学一点还是有用的