我有一组数据,列出了在许多城市的某种类型的部门中曾经雇用过的每位员工,并列出了每位员工的开始和结束日期。
例如:
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
(注意我会有很多城市,所以这里的主键是 city 和 year 除非我想有一个单独的 id 列。)
是否有有效的 SQL 查询来执行此操作?我能想到的只是一系列 UNIONed 查询,我想获得数字的每一年都有一个查询。
我的数据集有几百个城市和 178,000 条员工记录。我需要在我的数据集上为每个城市找到几十年的年度数据。