如果不使用group by来聚合赢家/输家,可以使用窗口函数来实现。
以下是一个示例代码,假设有一个名为scores的表,包含以下列:player(玩家名称)和score(得分)。
SELECT player, score
FROM (
  SELECT player, score, ROW_NUMBER() OVER(ORDER BY score DESC) as rank
  FROM scores
) as ranked
WHERE rank = 1;
这个查询将根据得分对玩家进行排名,并选择得分最高的玩家。如果要选择得分最低的玩家,则可以将ORDER BY子句中的DESC改为ASC。
这种方法使用了窗口函数ROW_NUMBER()来为每个玩家分配一个排名,然后通过外部查询选择排名为1的玩家,即得分最高/最低的玩家。