SQL经典面试题
第一题
用一条SQL 语句 查询出每门课都大于80 分的学生姓名
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
#方法一
select distinct name from tb_test1 where fenshu <= 80;
#方法二
select distinct name from tb_test1 where name not in(
select distinct name from tb_test1 where fenshu <= 80
);
第二题
#方法一
select s.*, if(s.score >= 60,'pass','fail') mark from tb_score s;
#方法二
select s.*, case when s.score >= 6 then 'pass' else 'fail' end mark from tb_score s;
第三题
create table testtable1
(
id number,
department varchar(12)
)
select * from testtable1
insert into testtable1 values(1,‘设计’)
insert into testtable1 values(2,‘市场’)
insert into testtable1 values(3,‘售后’)
/*
结果
id department
1 设计
2 市场
3 售后
/
create table testtable2
(
id number,
dptID int,
name varchar(12)
)
insert into testtable2 values(1,1,‘张三’)
insert into testtable2 values(2,1,‘李四’)
insert into testtable2 values(3,2,‘王五’)
insert into testtable2 values(4,3,‘彭六’)
insert into testtable2 values(5,4,‘陈七’)
/
用一条SQL语句,怎么显示如下结果
id dptID department name
1 1 设计 张三
2 1 设计 李四
3 2 市场 王五
4 3 售后 彭六
5 4 黑人 陈七
*/
select t2.id,ifnull(t1.department,'黑人'), t2.dptID,t2.`name` from testtable1 t1 right join testtable2 t2
on t1.id = t2.dptID;
第四题
有如下表:
写一条Sql语句查出,如下表:
select name,round(sum(if(course = 'hibernate',score,0)),0) hibernate ,round(sum(if(course = 'spring',score,0)),0) spring, round(sum(if(course = 'struts',score,0)),0) struts from tb_course
group by name;