Leetcode 579 查詢員工的累計薪水

2021-10-03 14:36:17 字數 1560 閱讀 5696

題目難度

困難題目描述

employee 表儲存了一年內的薪水資訊。

請你編寫 sql 語句,來查詢每個員工每個月最近三個月累計薪水(不包括當前統計月,不足三個月也要計算)。

結果請按 『id』 公升序,然後按 『month』 降序顯示。

正確答案

select e1.id,e1.

month

,sum

(e2.salary)

as salary

from employee e1,employee e2

where e1.id = e2.id

and e1.

month

>= e2.

month

# 防止取到比當前月大的月份

and e1.

month

< e2.

month+3

# e1的月份比e2的大,但不大於3 妙

and(e1.id,e1.

month

)notin(

select id,

max(

month

)from employee group

by id)

#去掉本月的統計結果

group

by e1.id,e1.

month

order

by e1.id asc

, e1.

month

desc

思路不簡練的答案
select id,

month

,salary

from

(select e1.id,e1.

month

,sum

(e2.salary)

as salary

from employee e1,employee e2

where e1.id=e2.id

and e1.

month

<= e2.

month+2

and e1.

month

>= e2.

month

group

by e1.id,e1.

month

) tmp

where

(id,

month

)notin(

select id,

max(

month

)from employee group

by id)

order

by id asc

,month

desc

外層的where篩選明明可以放進內層,卻巢狀了外層結構,造成冗餘與執行壓力,能不用子查詢就不用。

leetcode 員工排序

這道題給定的年齡範圍其實在0 99之間,是乙個很小的數字範圍,所以我們可以考慮使用輔助空間來對這些年齡進行排序 1.我們可以開闢乙個可以存放100個數字的陣列,1就代表一歲 2.進行迴圈統計每個年齡出現了多少次,比如37歲出現10次,那麼輔助陣列中下標為37的位置就為數字10 3.進行倆次迴圈對ag...

員工資訊查詢

如下資料表 create tabledept emp emp noint 11 not null,dept nochar 4 not null,from datedate not null,to datedate not null,primary key emp no,dept no create ...

python查詢員工資訊表

基本要求 使用者可以模糊查詢員工資訊 顯示匹配了多少條,匹配字元需要高亮顯示 usr env python coding utf 8 import time def breakflag 用於設定標誌位 while true break flag raw input t t t是否繼續?y n if ...