1

各地区で毎月役員の出席率が最も高いのはどの組織か? を計算するクエリを作成しようとしています。用語: 「District」と「loinum」は同じ意味です。マサチューセッツ州には 31 の地区があります。"Org" は地区の 1 つにある支部です。「役員」は、「WM」から「TY」までの役職です。テーブルは

loinum month   year  org  wm sw jw  ty
1        8     2011  Ma   0   1  1  1 
1        9     2011  CA   1   1  0  0 
1        8     2011  La   1   0  0  1 
2        7     2011  ME   1   1  1  1
2        6     2011  io   1   0  0  0  
2        9     2011  BO   1   0  0  0 
3        5     2011  Ch   1   1  1  1
3        4     2011  AL   0   0  0  1   
3        4     2011  EG   0   1  1  0

各 loinum と各月の最大値を計算して取得するにはどうすればよいですか?

4

1 に答える 1

2

これは一般的な解決策ですが、特定の DB の場合はもっと良いかもしれません。ロイナム、月、年の各値の最大値を取得するインライン ビューを作成します。次に、それをメイン テーブルに結合します。

注: 最大数が同数の場合、特定のロイナム、月、年について複数の結果が得られます。

SELECT t.* 
FROM   table1 t 
       INNER JOIN (SELECT loinum, 
                          month, 
                          year, 
                          Max(wm + sw + jw + ty) oCount 
                   FROM   table1 
                   GROUP  BY loinum, 
                             month, 
                             year) AS MAX 
         ON t.loinum = max.loinum 
            AND t.month = max.month 
            AND t.year = max.year 
            AND ( wm + sw + jw + ty ) = max.oCount

デモ

結果

LOINUM  MONTH   YEAR    ORG WM  SW  JW  TY
1           8   2011    Ma  0   1   1   1
1           9   2011    CA  1   1   0   0
2           6   2011    io  1   0   0   0
2           7   2011    ME  1   1   1   1
2           9   2011    BO  1   0   0   0
3           4   2011    EG  0   1   1   0
3           5   2011    Ch  1   1   1   1
于 2012-05-07T04:43:45.653 に答える