6.列出所有“CLERK”(办事员)的姓名及其部门名称,部门人数,工资等级
确定所需要的数据表:
dept表:部门名称
emp表:姓名,工资等级
emp表与dept表关联统计:部门人数
salgrade表:查询工资等级
确定已知的关联字段:
emp.deptno=dept.deptno
6.1 找出办事员的姓名
SELECT e.ename FROM emp e WHERE job='CLERK';
6.2 找到部门信息,引入dept表,同时增加消除笛卡尔积的条件
SELECT e.ename ,d.dname FROM emp e ,dept d WHERE job='CLERK' AND e.deptno=d.deptno;
6.3 部门人数需要额外统计,但是这是查询里面已经不能继续使用COUNT()函数,所以写子查询
SELECT e.ename,d.dname,temp.count FROM emp e ,dept d ,(SELECT deptno,COUNT(empno) count FROM emp GROUP BY deptno) temp
WHERE job='CLERK' AND e.deptno=d.deptno AND e.deptno=temp.deptno;