我想根据科目对学生进行排名,以及他们对该特定科目的总体排名。查询适用于所有科目,但当我指定where
子句时,我只获得where
子句中指定的用户的排名,并且排名始终为1,似乎没有检查其他ID
的数据
SELECT
Student_id,
Subject,
Total_Overal,
RANK() OVER (PARTITION BY Subject ORDER BY Total_Overal DESC) as StudentRank
FROM
exams
WHERE
Student_id = "155676"
AND Subject = "French";
字符串
2条答案
按热度按时间but5z9lq1#
因为where子句只产生一行结果,所以排名总是1。你需要在周围添加另一层SELECT:
字符串
qij5mzcb2#
如果你理解SQL的执行顺序,你就会明白为什么你会得到你所得到的。
WHERE
在SELECT
之前被计算。字符串
https://vladmihalcea.com/sql-operation-order/