次のような給与表があります。
id | person_id | start_date | pay
1 | 1234 | 2012-01-01 | 3000
2 | 1234 | 2012-05-01 | 3500
3 | 5678 | 2012-01-01 | 5000
4 | 5678 | 2013-01-01 | 6000
5 | 9101 | 2012-09-01 | 2000
6 | 9101 | 2014-04-01 | 3000
7 | 9101 | 2011-01-01 | 1500
and so on...
ここで、会社のすべての従業員の特定の月の給与の合計を照会したいと考えています。
特定の会社で特定の月に働いた人の ID を既に持っているので、WHERE person_id IN (...) のようなことを行うことができます。
ただし、給与クエリにはいくつか問題があります。たとえば、2012-08 月の結果は次のようになります。
10000
これは 3500+5000+1500 です。
したがって、最大 start_date <= 特定の月の (IN 句のすべての人の) 合計支払額を見つける必要があります。
いろいろなINNER JOINSを試してみましたが、1日が長くて今は考えられません。
どんなヒントでも大歓迎です。