1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
WITH TMP AS
(
SELECT 1 AS ORDRE, 30 AS GROUPE FROM DUAL UNION ALL
SELECT 2 , 50 FROM DUAL UNION ALL
SELECT 3 , 50 FROM DUAL UNION ALL
SELECT 4 , 50 FROM DUAL UNION ALL
SELECT 5 , NULL FROM DUAL UNION ALL
SELECT 6 , 48 FROM DUAL UNION ALL
SELECT 7 , 29 FROM DUAL UNION ALL
SELECT 8 , 29 FROM DUAL UNION ALL
SELECT 9 , 48 FROM DUAL UNION ALL
SELECT 10 , 48 FROM DUAL UNION ALL
SELECT 11 , 29 FROM DUAL
)
, SR AS
(
SELECT ORDRE, GROUPE
, min(ordre) over(partition BY groupe ORDER BY ordre ASC) AS rn
FROM TMP
)
SELECT dense_rank() over(ORDER BY rn ASC) AS ordre_pec
, ORDRE, GROUPE
FROM SR
ORDER BY ORDRE DESC; |
Partager