我讀了一些甲骨文的SQL資源,我發現這個SQL代碼:聚合函數的分組列作爲連接條件?
SELECT e.ename AS "NAME",
e.sal AS "Salary",
e.deptno,
AVG(a.sal) dept_avg
FROM emp e, emp a
WHERE e.deptno = a.deptno
AND e.sal > (SELECT AVG(sal)
FROM emp
WHERE deptno = e.deptno)
GROUP BY e.ename, e.sal, e.deptno;
這SQL代碼應該回報每一位員工即獲得比他的部門的平均工資越來越顯示他的名字,他的工資他部門ID和他部門的平均工資。
爲了返回dept_avg,我們必須group by
deptno
,但分組列很奇怪。我猜想,分組列是用作連接條件的列,即a.deptno
。真的嗎 ?如果沒有人可以澄清它嗎?
這就是爲什麼使用舊式連接是愚蠢的。 – Hogan
我不認爲用'INNER JOIN'重寫這個查詢會讓它更好。 – Timekiller
@Timekiller爲什麼不呢? – Hogan