【392天】我愛刷題系列151(2018.03.04)

@(一隻心中無碼的程序員)專欄程序員

叨叨兩句

  1. ~

SQL習題046

題目描述
按照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
相關文章
相關標籤/搜索