1
我有一組數據,列出了在許多城市某一類型的部門中僱用過的每位員工,並列出了每位員工的開始和結束日期。以開始和結束日期計算每年的數據
例如:
name city_id start_date end_date
-----------------------------------------
Joe Public 54 3-19-1994 9-1-2002
Suzi Que 54 10-1-1995 9-1-2005
我想是每一個城市的每一年在某一特定時期員工數量。例如,如果這是所有數據的城市54,那麼我會證明這是查詢結果,如果我想展示城市54的員工數爲1990-2005年:
city_id year employee_count
-----------------------------
54 1990 0
54 1991 0
54 1992 0
54 1993 0
54 1994 1
54 1995 2
54 1996 2
54 1997 2
54 1998 2
54 1999 2
54 2000 2
54 2001 2
54 2002 2
54 2003 1
54 2004 1
54 2005 1
(請注意,我將有很多城市,所以這裏的主鍵將是城市和年份,除非我想擁有一個單獨的ID列。)
有沒有一個有效的SQL查詢來做到這一點?我能想到的只是一系列UNIONed查詢,每年我都想查詢一個數字。
我的數據集有幾百個城市和178,000個員工記錄。我需要爲我的數據集中的每個城市找到幾十年的這種年度數據。
謝謝!我不知道'generate_series'。有一點需要注意的是,用count(*)'可以縮短查詢時間併產生相同的結果。我還修改了通過將城市ID添加到「GROUP BY」子句中,刪除'和t.city_id =',並將所有佔位符''替換爲SELECTed列中的't.city_id',從而對所有城市進行了修改。 –