Sql &引用;“工会”;超过;“按多维数据集分组”;
我正在使用工会操作员打印部门id、工作id、平均工资:Sql &引用;“工会”;超过;“按多维数据集分组”;,sql,oracle,Sql,Oracle,我正在使用工会操作员打印部门id、工作id、平均工资: 每个部门,每个部门,每个工作 每个部门,不管工作 每项工作,不分部门 整张桌子 而这可以通过“按多维数据集分组”轻松实现 按多维数据集分组(a,b):(a,b)(a)(b)(,我打算使用union操作符来执行此操作: SELECT e.department_id, e.job_id, ROUND(AVG(e.salary)) FROM employees e GROUP BY e.department_id, e.job_id UNI
- 每个部门,每个部门,每个工作
- 每个部门,不管工作
- 每项工作,不分部门
- 整张桌子
SELECT e.department_id, e.job_id, ROUND(AVG(e.salary))
FROM employees e
GROUP BY e.department_id, e.job_id
UNION
SELECT e.department_id, e.job_id, ROUND(AVG(e.salary))
FROM employees e;
在第二个联盟中,即“每个部门,不管工作如何”我该如何分组?我相信您正在寻找这样的东西:
SELECT 'JOB PER DEPARTMENT' AS GROUP,
A.DEPARTMENT_ID,
B.JOB_ID,
AVG(B.SALARY)
FROM DEPARTMENTS A
JOIN EMPLOYEES B
ON A.DEPARTMENT_ID = B.DEPARTMENT_ID
GROUP BY A.DEPARTMENT_ID, B.JOB_ID
UNION
SELECT 'DEPARTMENT' AS GROUP,
A.DEPARTMENT_ID,
'N/A' AS JOB_ID,
AVG(B.SALARY)
FROM DEPARTMENTS A
JOIN EMPLOYEES B
ON A.DEPARTMENT_ID = B.DEPARTMENT_ID
GROUP BY A.DEPARTMENT_ID
UNION
SELECT 'JOB' AS GROUP,
'N/A' AS DEPARTMENT_ID,
B.JOB_ID,
AVG(B.SALARY)
FROM DEPARTMENT A
JOIN EMPLOYEES B
ON A.DEPARTMENT_ID = B.DEPARTMENT_ID
GROUP BY A.JOB_ID
将第二个并集中的作业id替换为伪值或仅为null。然后仅按部门id分组