龙空技术网

oracle复杂查询语句精彩分析(5)

程序员VenusKong 296

前言:

而今大家对“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根据分组统计数量