sql面试题

1.列出emp(emp_id,deptno,salry)表中各部门低于部门平均工资的人数。
select count(*) from emp,(select deptno,avg(salry) as avg from emp group by deptno) as e where emp.deptno=e.deptno and emp.salry<e.avg group by deptno

2.从emp(emp_id,deptno,salry)表和emptemp(emp_id,deptno)表中获取所有员工的编号、部门编号和工资。
select emp_id,deptno,salry from emp Union Select emp_id,deptno,0 from emptemp

3.为emp(emp_id,deptno,salry)表中各部门最低薪水的人长薪到1500元
update emp set salry=1500 where salry in (select min(x.salry) from emp x group by x.deptno)  and  deptno=x.deptno  and salry<1500

4.表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name

5.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路): 
   大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 
       显示格式: 
       语文              数学                英语 
       及格              优秀                不及格   
------------------------------------------
select
(case when 语文>=80 then '优秀'
        when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
        when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
        when 英语>=60 then '及格'
else '不及格') as 英语,
from table

6.表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负

如果要生成下列结果, 该如何写sql语句?

            胜 负
2005-05-09 2 2
2005-05-10 1 2
select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负' from #tmp group by rq

你可能感兴趣的:(sql,C++,c,面试,C#)