如果不使用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的玩家,即得分最高/最低的玩家。