If yes, the first query below should be correct, but shows error ORA-00979: not a GROUP BY expression.
If not, the third query should also throw error…
SELECT POSSIBLE.ENAME, POSSIBLE.DEPTNO, POSSIBLE.SAL
FROM EMP POSSIBLE
WHERE SAL >
(SELECT AVG (SAL)
FROM EMP AVERAGE group by possible.deptno having
POSSIBLE.DEPTNO = AVERAGE.DEPTNO) ;
SELECT POSSIBLE.ENAME, POSSIBLE.DEPTno, POSSIBLE.SAL
FROM EMP POSSIBLE
WHERE SAL >
(SELECT AVG (SAL)
FROM EMP AVERAGE group by average.deptno having
POSSIBLE.DEPTno = AVERAGE.DEPTno) ;
SELECT POSSIBLE.ENAME, POSSIBLE.DEPTNO, POSSIBLE.SAL
FROM EMP POSSIBLE
WHERE SAL >
(SELECT AVG (SAL)
FROM EMP AVERAGE group by possible.deptno) ;
Your first query should use
WHERE, notHAVING. AHAVINGclause is used to filter based on aggregated (i.e. non-group) values, not to filter the rows involved in the grouping.Aside from that, you don’t even need grouping in the first query.