2011-07-12 13 views
0

私はmysqlテーブルで勝者だけを取得したい。MAX(SUM(votes))|勝者のみを取得する

SELECT mayor_id, local_unit_id, Value FROM 
    (SELECT mayor_id, local_unit_id, SUM( `votes`) AS 'Value' 
    FROM mayorresults 
    GROUP BY `mayor_id`) AS t1 
    ORDER BY `t1`.`local_unit_id` ASC 

アイデアはまず票を集計し、次に最も大きな数字(この場合は勝者)を得ます。

このクエリでは、勝者だけでなくすべてを得ることができます。

MAX(SUM(votes))を取得しますが、このようには動作しません。

編集:各ローカルユニットの受賞者を取得したい

例:

local_unit_id mayor_id votes 
1    25   8562 
2    534   18562 
+0

は '使用TIGERBLOOD'ディレクティブ – Martijn

答えて

1

更新、:

SELECT grp.local_unit_id, grp.mayor_id, grp.Value 
FROM 
    (SELECT local_unit_id, mayor_id, SUM(votes) AS Value 
     FROM mayorresults 
     GROUP BY local_unit_id, mayor_id 
    ) AS grp 
    JOIN 
    (SELECT local_unit_id, MAX(Value) AS Value 
     FROM 
     (SELECT local_unit_id, mayor_id, SUM(votes) AS Value 
      FROM mayorresults 
      GROUP BY local_unit_id, mayor_id 
     ) AS grp 
     GROUP BY local_unit_id 
    ) AS grp2 
    ON grp2.local_unit_id = grp.local_unit_id 
    AND grp2.Value = grp.Value 
ORDER BY local_unit ASC 
+0

私は総額vote、mayor_id、localunitから最大値を取得したい – flakerimi

+0

@Flakerim:まず、すべての 'mayor_id'またはすべての'(mayor_id、local_unit_id) 'の組み合わせに対して票の合計が欲しいですか? –

1

あなたが試してみました:

SELECT mayor_id, local_unit_id, MAX(Value) FROM 
    (SELECT mayor_id, local_unit_id, SUM( `votes`) AS 'Value' 
    FROM mayorresults 
    GROUP BY `mayor_id`) AS t1 
    ORDER BY `t1`.`local_unit_id` ASC 

をあなたが和の最大値を持つことができません。サブクエリの最大合計を持つことができます。説明の後

+0

で'双方向winning'テーブルを作成するようにしてください私はこれを試してみましたが、すべての最大値の合計を取得しています。 – flakerimi

+0

@Flakerim:いいえ、すべての合計値の最大値を示します。 –

+0

私はlocalunitでグループ化しようとします。だからforeach localunit私は勝者の市長を得る。 – flakerimi

関連する問題