テーブルリスト(gameid、playerid、team、max_minions)があり、max_minionsが最も低い(各チーム内、各ゲーム内の)各チーム内のプレーヤーを取得したいと思います。つまり、ゲームとチームの組み合わせごとにリスト(gameid、team、playerid_with_lowest_minions)が必要です。
私はこれを試しました:
SELECT * FROM MinionView GROUP BY gameid, team
HAVING MIN(max_minions) = max_minions;
残念ながら、これは、各(gameid、team)で使用可能な行からランダムな行を選択し、HAVING比較を行うため、機能しないようです。ランダムに選択された行が一致しない場合は、単にスキップされます。
WHERE句内で集計関数を使用できないため、WHEREの使用も機能しません。ゲームがもっとたくさんあるのでLIMITは機能せず、LIMITは返される行の総数を制限します。
(gameid、teamid、MIN(max_minions))を含む別のテーブル/ビューを追加せずにこれを行う方法はありますか?
データ例:
sqlite> SELECT * FROM MinionView;
gameid|playerid|team|champion|max_minions
21|49|100|Champ1|124
21|52|100|Champ2|18
21|53|100|Champ3|303
21|54|200|Champ4|356
21|57|200|Champ5|180
21|58|200|Champ6|21
64|49|100|Champ7|111
64|50|100|Champ8|208
64|53|100|Champ9|8
64|54|200|Champ0|226
64|55|200|ChampA|182
64|58|200|ChampB|15
...
期待される結果(私は主にplayeridに関心がありますが、概要をわかりやすくするためにチャンピオンのmax_minionsをここに含めました):
21|52|100|Champ2|18
21|58|200|Champ6|21
64|53|100|Champ9|8
64|58|200|ChampB|15
...
それが重要な場合は、Python3.1でSqlite3を使用しています。