題目難度
困難題目描述
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 ...