oracle 一个表中的SQL多个选择语句

dwbf0jvd  于 2022-11-22  发布在  Oracle
关注(0)|答案(1)|浏览(269)

我 有 一 个 SQL 数据 库 , 其中 有 两 个 表 , 分别 称为 DEPT 和 EMP

create table dept(  
  deptno     number(2,0),  
  dname      varchar2(14),  
  loc        varchar2(13),  
  constraint pk_dept primary key (deptno)  
);
create table emp(  
  empno    number(4,0),  
  ename    varchar2(10),  
  job      varchar2(9),  
  mgr      number(4,0),  
  hiredate date,  
  sal      number(7,2),  
  comm     number(7,2),  
  deptno   number(2,0),  
  constraint pk_emp primary key (empno),  
  constraint fk_deptno foreign key (deptno) references dept (deptno)  
);

中 的 每 一 个
需要 做 的 事情 如下 :

  • 部门 位置
  • 公司 平均 工资
  • 部门 平均 工资
  • 与 部门 平均 工资 的 偏差
  • 偏离 公司 平均 工资
  • EMP 编号
  • 职务
  • 薪资

这 是 我 目前 准备 好 的

SELECT ROUND(AVG(sal) over(),2) AS COMPANY_AVERAGE_SALARY,sal - ROUND(AVG(sal) over(),2) AS DEVIATION_FROM_COMPANY_AVERAGE_SALARY, empno AS EMPNO, job AS JOB, sal AS SALARY  from emp;

格式
我 也 有 :

SELECT dept.loc AS DEPARTMENT_LOCATION FROM emp,dept WHERE emp.deptno=Dept.deptno;

格式
我 的 主要 问题 是 , 我 似乎 无法 在 同一 输出 中 显示 不同 的 选择 行 , 不 知道 如何 在 每行 上 显示 部门 平均 工资 , 以及 如何 执行 DEVIATION _ FROM _ DEPARTMENT _ AVERAGE _ SALARY 。 非常 感谢 您 的 帮助 。

vohkndzv

vohkndzv1#

您 已经 非常 接近 示例 查询 了 。 要 查找 偏差 , 只需 查找 当前 员工 薪金 与 公司/部门 平均 薪金 之间 的 差异 , 如下 所 示 :

SELECT d.loc
           AS department_location,
       ROUND (AVG (sal) OVER (), 2)
           AS company_average_salary,
       ROUND (AVG (sal) OVER (PARTITION BY e.deptno), 2)
           AS dept_average_salary,
       ROUND (sal - AVG (sal) OVER (PARTITION BY e.deptno), 2)
           AS dept_salary_deviation,
       ROUND (sal - AVG (sal) OVER (), 2)
           AS company_salary_deviation,
       e.empno,
       e.job,
       e.sal
  FROM emp e LEFT JOIN dept d ON (e.deptno = d.deptno);

中 的 每 一 个

相关问题