Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql &引用;“工会”;超过;“按多维数据集分组”;_Sql_Oracle - Fatal编程技术网

Sql &引用;“工会”;超过;“按多维数据集分组”;

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

我正在使用工会操作员打印部门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
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分组