mysqlsql语句⾯试经典50题_常见的SQL⾯试题:经典50题
(简单)
⽬录
⼀、简单查询
1. 查询姓“猴”的学⽣名单
2.查询姓“孟”⽼师的个数
⼆、汇总分析
1.查询课程编号为“0002”的总成绩
2.查询选了课程的学⽣⼈数
3.查询各科成绩最⾼和最低的分, 以如下的形式显⽰:课程号,最⾼分,最低分
4.查询每门课程被选修的学⽣数
5.查询男⽣、⼥⽣⼈数
6.查询平均成绩⼤于60分学⽣的学号和平均成绩
7.查询⾄少选修两门课程的学⽣学号
8.查询同名同姓学⽣名单并统计同名⼈数
9.查询不及格的课程并按课程号从⼤到⼩排列
10.查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列
三、复杂查询
1.查询所有课程成绩⼩于60分学⽣的学号、姓名
2.查询没有学全所有课的学⽣的学号、姓名
3.查询出只选修了两门课程的全部学⽣的学号和姓名
printstar4.⽇期函数
5.查询各科成绩前两名的记录(重要)
亚马逊雨林纪录片全集6.【⾏转列、列转⾏】问题(重要)
(1)⾏转列
(2)列转⾏
(3)单列拆分转⾏
题⽬来源:知乎猴⼦ 常见的SQL⾯试题:经典50题
⼀、简单查询
1. 查询姓“猴”的学⽣名单
select *
from student
where sname like "猴%"
2.查询姓“孟”⽼师的个数
select count(*)
from teacher
where tname like "孟%"
⼆、汇总分析
1.查询课程编号为“0002”的总成绩
select sum(score)
from score
where cid="0002"
2.查询选了课程的学⽣⼈数
select count(distinct sid)
from score
where cid is not null and score is not null
3.查询各科成绩最⾼和最低的分, 以如下的形式显⽰:课程号,最⾼分,最低分select cid, max(score),min(score)
from score
group by cid
4.查询每门课程被选修的学⽣数
select cid,count(distinct sid)
from score
group by cid
5.查询男⽣、⼥⽣⼈数
select ssex,count(sid)
from student
group by ssex
6.查询平均成绩⼤于60分学⽣的学号和平均成绩
select sid, avg(score) as average
from score
group by sid
having average>60
7.查询⾄少选修两门课程的学⽣学号
select sid,count(distinct cid)
from score
group by sid
primary display
having count(distinct cid)>=2
8.查询同名同姓学⽣名单并统计同名⼈数
select sname, count(sid)
from student
group by sname
having count(sid)>=2
9.查询不及格的课程并按课程号从⼤到⼩排列
select distinct cid
from score
where score<60
order by cid desc
10.查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列select cid, avg(score) as average
from score
group by cid
order by average asc, cid desc
后⾯⼏题太简单了...不写了
三、复杂查询
1.查询所有课程成绩⼩于60分学⽣的学号、姓名
select s.sid, s.sname
from student s
where s.sid in(
select distinct sid
from score
where score<60)
2.查询没有学全所有课的学⽣的学号、姓名
select sid,sname
from student
where sid in(
select sid
from score
group by sidintegerid什么意思
having count(distinct cid)
3.查询出只选修了两门课程的全部学⽣的学号和姓名
select sid,sname
from student
where sid in(
select sid
from score
group by sid
having count(distinct cid)=2)
4.⽇期函数
5.查询各科成绩前两名的记录(重要)
详细见mysql分组取TOP N个的问题
6.【⾏转列、列转⾏】问题(重要)
(1)⾏转列
下⾯是学⽣的成绩表(表名score,列名:学号、课程号、成绩)
使⽤sql实现将该表⾏转列为下⾯的表结构容器按用途分类可分为
思路:使⽤case when,具体思路参考⽂章sql⾯试题:⾏列如何互换?select sid,
max(case when cid='0001' then score else 0 end) as '课程号0001', max(case when cid='0002' then score else 0 end) as '课程号0002', max(case when cid='0003' then score else 0 end) as '课程号0003' from score
group by sid
不要忘记最后要group by
(2)列转⾏
原数据参考⽂章 MySQL⾏转列与列转⾏
要求转化成:
select user_name, '语⽂' as course, CN_SCORE as score from GRADE
mysql面试题sql

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。