MySql 查询排名前10(包含并列)Sql |
您所在的位置:网站首页 › sql排序之后获取排名的方法 › MySql 查询排名前10(包含并列)Sql |
今天一个测试的朋友去面试,考察了她数据库查询的一些语法问题,但是一些细节她没有考虑进去被刷下了。果然行业标准提高了啊。 贴一下笔试题目。 –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 |