MySql 查询排名前10(包含并列)Sql

您所在的位置:网站首页 sql排序之后获取排名的方法 MySql 查询排名前10(包含并列)Sql

MySql 查询排名前10(包含并列)Sql

#MySql 查询排名前10(包含并列)Sql| 来源: 网络整理| 查看: 265

今天一个测试的朋友去面试,考察了她数据库查询的一些语法问题,但是一些细节她没有考虑进去被刷下了。果然行业标准提高了啊。

贴一下笔试题目。

–1.学生表 Student(SId,Sname,Sage,Ssex) –SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别

–2.课程表 Course(CId,Cname,TId) –CId 课程编号,Cname 课程名称

–3.成绩表 SC(SId,CId,score) –SId 学生编号,CId 课程编号,score 分数

完成如下查询: ① 查询即选了课程编号A又选了课程编号B的学生信息 ② 查询所有学生的选课数量和总成绩 ③ 查询课程编号A成绩前十的学生信息和对应的分数 ④ 查询选课热度前三的课程信息 ⑤ 查询每个学生的选课信息

这题目大概大家都不陌生,但是说到查询前多少名时很多人第一反应就是用 top,并没有考虑不同数据库是不一样的而且并列排名也往往会忽略。 就此 ,我贴一下我的答案,写的不好,希望多交流。

第1题 select * from student where sid in ( SELECT sid from sc WHERE cid in (A,B) ) 第2题 Select sum(score),count(cid),s.sid ,sname from student s left join sc on s.sid = sc.sid group by s.sid ,sname 第3题 -- Orcal serverSql 用 top 10 -- Mysql SELECT * from ( SELECT sid,cid, Score, @rank:= if(@pre=score, @Rank+0, @Rank+1) as Rank, @pre:= score FROM sc , (SELECT @rank:=0, @pre:= NULL) r where cid = 2 ORDER BY score desc ) a LEFT JOIN student s on a.sid = s.sid WHERE rank


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3