問題:`emp` 表是否有 `deptno` 欄位?`GROUP BY` 何時使用?
EMPNO NUMBER(4) -- 員工編號
ENAME VARCHAR2(10) -- 姓名
JOB VARCHAR2(9) -- 職稱
MGR NUMBER(4) -- 主管編號
HIREDATE DATE -- 到職日期
SAL NUMBER(7,2) -- 薪資
COMM NUMBER(7,2) -- 獎金
DEPTNO NUMBER(2) -- 部門編號 ← 有此欄位
所以 **`emp` 表確實有 `deptno` 欄位**,代表所屬部門代碼 (10=會計, 20=研發, 30=銷售, 40=營運)。
「將結果集依指定欄位分組,對每組執行彙總函數 (COUNT, SUM, AVG, MAX, MIN...)」
SELECT deptno, COUNT(*) AS cnt, AVG(sal) AS avg_sal
FROM emp
GROUP BY deptno
ORDER BY deptno;
結果:
DEPTNO CNT AVG_SAL 10 3 2916.67 20 5 2175.00 30 6 1566.67
SELECT deptno, AVG(sal) AS avg_sal
FROM emp
GROUP BY deptno
HAVING AVG(sal) > 2000; -- 只保留平均薪資 > 2000 的部門
記住:`emp` 有 `deptno`;要分組統計就 `GROUP BY deptno`,再配合彙總函數與 `HAVING` 即可靈活分析部門層級資料。