需要找到员工之间的薪资差异。
我有一名员工。
我的结果应该是
0
1000
5000
26000
怎么写查询?
在此先感谢您的帮助。
一个选项使用相关子查询:
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;
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,那么这可以通过更简单的方式完成。
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