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',从而对所有城市进行了修改。 –