🔎这里是MYSQL数据库加油站
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️
前段时间朋友发给我一个数据库面试题,第一眼竟不知从何下手!
下面一起来看一看这个题吧!
学生成绩表
问题一:一条sql语句查询出成绩排第三的学生信息
分析: 想要查出成绩排行第三的学生信息,要进行三次查询。
- 首先要将成绩进行排序,查询出排序后的成绩和排名。
- 然后在第一次查询出的结果中查询出排名第三的成绩。
- 最后根据学生成绩在student表中查询出学生信息
-- 第三次查询
SELECT id,name,score FROM student WHERE score=(
-- 第二次查询
select score FROM (
-- 第一次查询
select score,concat(RANK() over(ORDER BY score desc))acb FROM student
)ace WHERE acb=3)
问题二:查询学生信息和成绩评价,成绩>=80为优秀,成绩>=60为及格,成绩<60为不及格。
分析:在学生信息后面多显示一个字段为成绩评价,if判断成绩。
select id,name,score,if(80<=score,'优秀',if(60<=score,'及格','不及格'))评价 from student
问题三:以优秀,及格,不及格分组并统计每组的个数
分析:直接在问题二的表上进行分组统计
select le 评价,count(*) 人数 from (select id,name,score,if(80<=score,'优秀',if(60<=score,'及格','不及格'))le from student) as t group by t.le;