查询没有分区或诸如rank()之类的函数

时间:2019-06-13 16:25:26

标签: sql oracle join self-join

假设我们有学生表格(姓名,年级,组,年) 我们需要一个查询,该查询为每个组的相应学生排名。 我知道可以使用rank()OVER(按DESC等级按组顺序划分)轻松完成此操作。但是我认为这也可以通过自我联接或子查询来完成。有什么想法吗?

1 个答案:

答案 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;