查找员工之间的薪资差异[关闭]

问题描述 投票:-5回答:3

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

我有一名员工。

我的结果应该是

0

1000

5000

26000

怎么写查询?

在此先感谢您的帮助。

mysql sql
3个回答
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


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,那么这可以通过更简单的方式完成。


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
© www.soinside.com 2019 - 2024. All rights reserved.