多くの都市の特定の種類の部門でこれまでに雇用された各従業員をリストする一連のデータがあり、各従業員の開始日と終了日がリストされています。
例えば:
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 のすべてのデータである場合、1990 年から 2005 年の市 54 の従業員数を表示したい場合、クエリ結果としてこれを表示します。
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 クエリはありますか? 私が考えることができるのは、数値を取得したい年ごとに 1 つのクエリを持つ、一連の UNIONed クエリだけです。
私のデータセットには、数百の都市と 178,000 の従業員レコードがあります。データセットの各都市について、数十年分のこの年間データを見つける必要があります。