#sql #postgresql
Вопрос:
В моей таблице каждая строка может содержать целое число, назовем этот столбец целым height
числом . например, значения в этом столбце могут быть следующими: [5, 4, 0, 1, 9]
Мне нужно, чтобы эта последовательность в примере была изменена на: [0, 1, 4, 5, 9]
, а затем я хочу, чтобы эти значения стали такими: [1, 2, 3, 4, 5]
.
Идея, которую я пытаюсь написать в SQL, состоит в том, чтобы получить минимум в первый раз и подсчитать, на сколько значений меньше, чем он.
Как я могу написать/перевести эту идею в SQL-запрос?
Комментарии:
1. могут ли значения в столбце
height
дублироваться. или в вашей таблице есть какое-либо поле первичного ключа?
Ответ №1:
Вы, кажется, хотите получить рейтинг:
select t.*, row_number() over (order by height) as height_seqnum
from t
order by height_seqnum;
Комментарии:
1. Да, но в то же время мне нужно заменить значение высоты его ранжированием. Спасибо вам за ваш ответ.
2. Могу ли я связать предложение UPDATE с написанным вами запросом?
3. @MahSou . . . Предполагая, что у вас есть первичный ключ на столе (или что высота уникальна), тогда да. Просто используйте это как подзапрос в an
update
.