1. 程式人生 > >oracle SELECT 練習中出現的問題

oracle SELECT 練習中出現的問題

6.求出帶‘S’字元的僱員所在的部門的工資合計和其部門的人數

上面這個可以正常查詢,但

select sum((select sal from emp p where e.deptno=p.deptno)),count((select sal from emp p where e.deptno=p.deptno)) from emp e where ename like '%S%' group by deptno ;

錯誤!為什麼不能呢?

第 1 行出現錯誤:

ORA-01427: 單行子查詢返回多個行

select (select sum(sal) from emp p where e.deptno=p.deptno),(select count(sal) from emp p where e.deptno=p.deptno) from emp e where ename like '%S%' group by deptno ;

因為統計函式裡面只能是單個列名,通過這個列名統計函式可以統計到多行資料,而select是一個列裡面包含的多行資料所以兩者是有差別的,因此可以如上將統計函式放在裡面。

select job,count(*),avg(sal) from emp group by job having min(avg(sal));

第 1 行出現錯誤:

ORA-00935: 分組函式的巢狀太深

select job,count(*),avg(sal) from emp group by job having avg(sal) = (select min(avg(sal)) from emp group by job) ;

Having 不能巢狀統計函式