需要找到员工之间的薪资差异。
我有一名员工。
我的结果应该是
0
1000
5000
26000
如何编写查询?
提前感谢您的帮助。
答案 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;
另一个选择是使用联接:
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;
答案 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