我有一个表格列表(gameid、playerid、team、max_minions),我想获得每个团队中 max_minions 最低的玩家(在每个团队中,在每个游戏中)。即我想要每个游戏/团队组合的列表(gameid、团队、playerid_with_lowest_minions)。
我试过这个:
SELECT * FROM MinionView GROUP BY gameid, team
HAVING MIN(max_minions) = max_minions;
不幸的是,这似乎不起作用,因为它似乎从每个(gameid,团队)的可用行中选择一个随机行,然后进行 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
...
如果这很重要,我在 Python 3.1 下使用 Sqlite3。