假设我们有学生表格(姓名,年级,组,年) 我们需要一个查询,该查询为每个组的相应学生排名。 我知道可以使用rank()OVER(按DESC等级按组顺序划分)轻松完成此操作。但是我认为这也可以通过自我联接或子查询来完成。有什么想法吗?
答案 0 :(得分:1)
与rank()
等效:
select s.*,
(select 1 + count(*)
from students s2
where s2.group = s.group and
s2.grade > s.grade
) as rank
from students s;