查找员工之间的薪资差异

时间:2017-12-23 07:00:45

标签: mysql sql

需要找到员工之间的薪资差异。

我有一名员工。

table

我的结果应该是

0

1000

5000

26000

如何编写查询?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

一个选项使用相关子查询:

SELECT
    emp_id,
    emp_name,
    emp_salary - COALESCE((SELECT emp_salary FROM employee e2
              WHERE e2.emp_id = e1.emp_id - 1), emp_salary) AS salary
FROM
    employee e1
ORDER BY emp_id;

Demo

另一个选择是使用联接:

SELECT
    e1.emp_id,
    e1.emp_name,
    e1.emp_salary - COALESCE(e2.emp_salary, e1.emp_salary) AS salary
FROM employee e1
LEFT JOIN employee e2
    ON e1.emp_id = e2.emp_id + 1
ORDER BY
    emp_id;

Demo

答案 1 :(得分:0)

   ALTER TABLE employee
      ADD dummy_emp_salary integer;
UPDATE employee SET dummy_emp_salary= 18000 where emp_id=1;
UPDATE employee SET dummy_emp_salary= 18000 where emp_id=2;
UPDATE employee SET dummy_emp_salary= 19000 where emp_id=3;
UPDATE employee SET dummy_emp_salary= 2400 where emp_id=4;

select emp_salary-dummy_emp_salary from employee;

虽然有数百万条记录时我的查询效率不高。 Tim Biegeleisen的回答很安静。但如果你是新手,那么这很容易理解。如果您正在使用PL / SQL,那么这可以通过更简单的方式完成。

答案 2 :(得分:0)

SELECT e1.emp_name,(e1.emp_salary-e2.emp_salary) FROM `employee` e1  LEFT JOIN employee e2 ON e2.emp_id= e1.emp_id-1