Вопрос

Предположим, у нас есть следующие данные:

Key Value Desired Rank
--- ----- ------------
P1    0.6            2    
P1    0.6            2    
P1    0.6            2    
P2    0.8            1
P2    0.8            1
P3    0.6            3
P3    0.6            3

Я хочу выбрать отчетливый Ключи заказан Значение Desc. быть отображенным в сетке, которая поддерживает пагинацию.

Я не знаю, как генерировать ранг как значения, отображаемые в Желаемый рейтинговый столбец. Отказ Так что я могу правильно пагировать над набором данных

Когда я пытался использовать: deste_rank () over (порядок по значению), результат был

Key Value   DENSE_RANK() OVER(ORDER BY value)
--- ----- ------------
P1    0.6            2    
P1    0.6            2
P1    0.6            2    
P2    0.8            1
P2    0.8            1
P3    0.6            2    
P3    0.6            2

Когда я пытаюсь выбрать первые две клавиши «ранг от 1 до 2», я получаю обратно 3 ключей. И это разрушает необходимый механизм пегирования.

Есть идеи?

Спасибо

Это было полезно?

Решение

Если вы хотите отчетливые ключи и ценности, почему бы не использовать разные?

select distinct
  t.Key,
  t.Value
from
  YourTable t
order by
  t.value

Вы действуете нужны ранг?

Если вы сделаете, вы все равно могли

select distinct
  t.Key,
  t.Value,
  dense_rank() over () order by (t.Value, t.Key) as Rank
from
  YourTable t
order by
  t.value

Эта работа не работает без разных.

Другие советы

«Когда я пытаюсь выбрать первые две клавиши« ранг от 1 до 2 », я получаю обратно 3 ключей.

Это связано с тем, что вы заказываете только по значению, поэтому все клавиши с одинаковым значением присваиваются одинаковым рангом. Таким образом, вам необходимо включить ключ в пункте заказа. Так:

DENSE_RANK() OVER (ORDER BY key ASC, value DESC)  
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top