Sql 如何使用秩函数来解决这个问题?
我有以下数据: 我想知道这个结果: 所以我试过这个:Sql 如何使用秩函数来解决这个问题?,sql,oracle,oracle11g,oracle10g,ranking,Sql,Oracle,Oracle11g,Oracle10g,Ranking,我有以下数据: 我想知道这个结果: 所以我试过这个: 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 SELE
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
)
但这并没有解决我的问题。我如何解决这个问题
提前感谢密级不分级:
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
)
密级非密级:
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
)
如果您想避免排名差距,您应该使用而不是排名:
如果您想避免排名差距,您应该使用而不是排名:
通过使用分区部分,您可以获得分区所依据的列的每个唯一值的排名。通过使用分区部分,您可以获得分区所依据的列的每个唯一值的排名。