字段value| order1| order2,
分组组内排序需求,有什么办法实现这样的要求,一次排序从大到小即order1,二次排序从某个开始排序,其他的不参与排序即order2(不是过滤是某些不参与排序)
40 1
30 2
20 3 1
10 4 2
..
------解决思路----------------------
select tt1.value,tt1.rn1,tt2.rn2 from
(select value,row_number()over(order by value desc) rn1 from t1) tt1,
(select value,row_number()over(order by value desc) rn2 from t1 where value<=2) tt2
where tt1.value=tt2.value(+)
order by tt1.value desc
------解决思路----------------------
作业题还是什么?只要这个格式就行吗?
with T AS (
select value,row_number()over(order by value desc) rn from t1
)--前两个不参与第二次排序,两次排序方式一样就不需要在执行一次排序了,数据处理下就行了
SELECT VALUE,RN RN1,(CASE WHEN RN<=2 THEN NULL ELSE RN-2 END) RN2
FROM T
order by value desc