SELECT * FROM grade_copy; -- 原表
select score s1,row_number() over(order by score) aranks1 from grade_copy;
-- 窗口函数自增一列排名
select * from (
select score s1,row_number() over(order by score) aranks1 from grade_copy
) a join (
select score s2,row_number() over(order by score) aranks2 from grade_copy
) b on a.aranks1=b.aranks2
-- 自联结效果
select b.aranks1,sum(a.s1) sums1,sum(b.s2) sums2 from (
select score s1,row_number() over(order by score) aranks from grade_copy
) a join (
select score s2,row_number() over(order by score) aranks1 from grade_copy
) b on a.aranks<=b.aranks1 group by b.aranks1
注意:自联结 group by >= 的一方。
如果group by a.aranks,那么 on a.aranks>=b.aranks1