我有这些数据:
我想要这个结果:
所以我试过这个:
SELECT
text_area,
ordered_area,
RANK () OVER (ORDER BY text_area) ranked_area
FROM
(
SELECT '1200 AA' text_area ,1 ordered_area
FROM
DUAL
UNION ALL
SELECT '1200 AA' ,2
FROM
DUAL
UNION ALL
SELECT '1200 BB' ,3
FROM
DUAL
UNION ALL
SELECT '1200 CC' ,4
FROM
DUAL
UNION ALL
SELECT '1200 CC' ,5
FROM
DUAL
)
但它没有解决我的问题。我该如何解决这个问题?
提前致谢
DENSE_RANK不排名:
SELECT
text_area,
ordered_area,
DENSE_RANK () OVER (ORDER BY text_area) ranked_area
FROM
(
SELECT '1200 AA' text_area ,1 ordered_area
FROM
DUAL
UNION ALL
SELECT '1200 AA' ,2
FROM
DUAL
UNION ALL
SELECT '1200 BB' ,3
FROM
DUAL
UNION ALL
SELECT '1200 CC' ,4
FROM
DUAL
UNION ALL
SELECT '1200 CC' ,5
FROM
DUAL
)
如果你想避免排名中的“差距”,你应该使用dense_rank
而不是rank
:
DENSE_RANK () OVER (ORDER BY text_area) ranked_area