@(一隻心中無碼的程序員)專欄程序員
- ~
題目描述
按照salary的累計和running_total,其中running_total爲前兩個員工的salary累計和,其餘以此類推。 具體結果以下Demo展現。。
CREATE TABLE salaries
( emp_no
int(11) NOT NULL,salary
int(11) NOT NULL,from_date
date NOT NULL,to_date
date NOT NULL,
PRIMARY KEY (emp_no
,from_date
));spa
本題的思路爲複用 salaries 表進行子查詢,最後以 s1.emp_no 排序輸出求和結果。 一、輸出的第三個字段,是由一個 SELECT 子查詢構成。將子查詢內複用的 salaries 表記爲 s2,主查詢的 salaries 表記爲 s1,當主查詢的 s1.emp_no 肯定時,對子查詢中不大於 s1.emp_no 的 s2.emp_no 所對應的薪水求和 二、注意是對員工當前的薪水求和,因此在主查詢和子查詢內都要加限定條件 to_date = '9999-01-01' SELECT s1.emp_no, s1.salary, (SELECT SUM(s2.salary) FROM salaries AS s2 WHERE s2.emp_no <= s1.emp_no AND s2.to_date = '9999-01-01') AS running_total FROM salaries AS s1 WHERE s1.to_date = '9999-01-01' ORDER BY s1.emp_no