2012-05-07 6 views
1

私は各地区で毎月最高の役員が出席している組織を計算するクエリを作成しようとしていますか? 条件: 「地区」と「loinum」は同じことを意味します。マサチューセッツ州には31の地区があります。 「団体」は地方の章であり、地方の一つです。 「役員」は、「WM」から「TY」までの役職です。 の表は、私は、各loinum、各月の最大を計算して得ることができる方法各行のメンバーを計算して最大値を取得

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 

のですか?

+0

があるだろうもちろん、あなたは月と年を意味するのですか? –

+0

月とloinum。しかし、私はいくつかのウェブサイトで見たもの、最大機能は1つのみのために最大を与えることができます:( –

+0

EX、最大出席は、loinum 1のMaで、SEPはCA –

答えて

2

これは一般的な解決策ですが、特定のDBの方が良いかもしれません。各loinum、month、およびyearの値の最大値を取得するインラインビューを作成します。その後、メインテーブルに戻します。

注:maxのネクタイがあれば月」とは、複数の特定のloinumの結果、月、年

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 

DEMO

結果

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 
+0

でしたが、loinum 1、 –

+0

あなたは毎月と各ライオネームを正しく言っていましたか?CAより第一loinumで9月の出席率が高い組織はありますか? –

+0

申し訳ありません:)、私はそれぞれ個別の表を意味します。 –

関連する問題