前言:
而今大家对“oracle根据分组统计数量”大致比较讲究,各位老铁们都需要了解一些“oracle根据分组统计数量”的相关知识。那么小编也在网上网罗了一些对于“oracle根据分组统计数量””的相关文章,希望同学们能喜欢,看官们快快来学习一下吧!第七题:列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数及所在部门名称、位置、平均工资。
SELECT temp.job,temp.count,d.dname,e.ename
FROM dept d,(
SELECT e.job job,COUNT(e.empno) count
FROM emp e
GROUP BY e.job
HAVING MIN(e.sal)>1500) temp,
emp e
WHERE e.deptno=d.deptno AND e.job=temp.job;
--第一步:使用emp表按照job分组,统计最低工资(HAVING)和人数
select e.job,count(e.empno),min(e.sal)
from emp e
group by e.job--统计函数是不参与分组的
having min(e.sal)>1500
--第二步:要查询出雇员所在的部门信息,但是以上的查询能跟dept表有关联吗?
--以上的查询和dept表之间并没有关联字段,那么如果没有关联字段,一定会有笛卡尔积产生,
--但是多表查询必须要消除笛卡尔积,所以必须联系;
--以上的查询可以和emp表的job字段关联;
--要引入的dept表也可以和emp表的deptno字段关联;
select e.job job ,count(e.empno) count
from emp e
group by e.job
having min(e.sal)>1500
select temp.job,temp.count,d.dname,e.ename
from dept d,(select e.job job ,count(e.empno) count
from emp e
group by e.job
having min(e.sal)>1500) temp,emp e
where e.deptno=d.deptno and temp.job=e.job
--第三步:求出一个部门的平均工资,使用emp表在子查询中统计
select temp.job,temp.count,d.dname,e.ename,res.avg
from dept d,(select e.job job ,count(e.empno) count
from emp e
group by e.job
having min(e.sal)>1500) temp,emp e,(select deptno dno,avg(sal) avg
from emp
group by deptno) res
where e.deptno=d.deptno and temp.job=e.job and res.dno=d.deptno
--8、列出在部门“SALES”(销售部)工作的员工姓名、基本工资、雇佣日期、部门名称、假定不知道销售部的部门编号。
select e.ename,e.sal,e.hiredate,d.dname
from emp e,dept d
where e.deptno=d.deptno and d.dname='SALES'
select * from emp;
标签: #oracle根据分组统计数量