Как я могу использовать функцию ранга, чтобы решить это? - PullRequest
1 голос
/ 12 марта 2019

У меня есть эти данные:

enter image description here

и я хочу к этому результату:

enter image description here

Итак, я попробовал это:

  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  
      )

но это не решило мою проблему. Как я могу решить эту проблему?

заранее спасибо

Ответы [ 2 ]

3 голосов
/ 12 марта 2019

DENSE_RANK не 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  
      )
1 голос
/ 12 марта 2019

Если вы хотите избежать пробелов в вашем рейтинге, вы должны использовать dense_rank вместо rank:

DENSE_RANK () OVER (ORDER BY text_area) ranked_area
...