select e.deptno as 部门编号, d.dname as 部门名称, count(*) as 部门人数, sum(case when e.sal>=2000 then 1 else 0 end) as 工资大于等于2000人数, sum(case when e.sal<2000 then 1 else 0 end) as 工资小于2000人数 from emp e,dept d where e.deptno=d.deptno group by e.deptno,d.dname
==============================================================
姓名 体征 数值 --------- ---------- -------- 美男1 身高 1.60 美男1 体重 60 美男1 胸围 79 美男2 身高 1.69 美男2 体重 55 美男2 胸围 77 转换为如下结果: 姓名 身高 体重 胸围 --------- ---------- -------- 美男1 1.60 60 79 美男2 1.69 55 77 SQL语句: SELECT 姓名, CASE WHEN 体征=""身高"" THEN MAX(数值) END 身高, CASE WHEN 体征=""体重"" THEN MAX(数值) END 体重, CASE WHEN 体征=""胸围"" THEN MAX(数值) END 胸围 FROM 美男 GROUP BY 姓名,体征
==============================================================
查询哪个部门没有员工:
select d.deptno from emp e,dept d where d.deptno=e.deptno(+) and e.deptno is null select d.deptno from dept d left join emp e on d.deptno=e.deptno where e.deptno is null
===================================================================
学生表student(学号,姓名,性别,年龄),课程表course(编号,课程名称),选课表sc(学号,课程编号,成绩)
查询选修了5门课程的学生学号和姓名
select s.id,s.name from student s where (select count(*) from sc where sc.id=s.id)=5
====================================================================
查询公司工资最高的前三位:
select * from (select * from emp order by sal desc) where rownum<=3