我有下表
CREATE TABLE "results" (
"player" INTEGER,
"tournament" INTEGER,
"year" INTEGER,
"course" INTEGER,
"round" INTEGER,
"score" INTEGER,
);
以下是单个tournament
/year
/round
组合的数据样本。
我想创建一个名为ranking
的新列,它代表特定tournament
/year
/round
组合的玩家排名。得分最多的玩家是#1。如果玩家得分相同,他们将打成平手,需要用“T”指定。
所需的输出如下所示:
我怎样才能达到以上目的?谢谢
1条答案
按热度按时间pvabu6sv1#
使用
DENSE_RANK()
窗口函数进行排序,如果需要在开始时连接'T'
,则使用COUNT()
窗口函数检查:请参见demo。
如果
course
对该排名不重要,则将其从两个PARTITION BY
子句中删除。