热线电话:13121318867

登录
2020-05-05 阅读量: 1035
SQL 进阶面试题

#查询第二名和第三名的学生信息;

select * from sc sc1

where (select sum(score>sc1.score) from sc where c_id=sc1.c_id) in (1,2)

#查询每门课程的平均成绩,并且平均成绩大于等于70分:

select avg(score)平均成绩,c_id from sc

group by c_id

having 平均成绩>=70;

#查询至少选修了2门课的学生学号:

select s_id from sc

group by s_id

having count(*)>=2;

#查询至少两门课程及格的学生学号:

select s_id from sc

group by s_id

having sum(score>=60)>1;

将成绩表转换为二维表的三种方式:

select s_id,

sum(if(c_id=01,score,0)) "01",

sum(if(c_id=02,score,0)) "02",

sum(if(c_id=03,score,0)) "03“

from sc

group by s_id;

select s_id,

sum(case when c_id=01 then score else 0 end) "01",

sum(case when c_id=02 then score else 0 end) "02",

sum(case when c_id=03 then score else 0 end) "03“

from sc

group by s_id;

# 工作中常用

select s_id,

sum((c_id='01')*score) '01',

sum((c_id='02')*score) '02',

sum((c_id='03')*score) '03'

from sc

group by s_id;

37.1468
5
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子