oracle SELECT 練習中出現的問題
阿新 • • 發佈:2018-12-18
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 不能巢狀統計函式