Как я могу изменить и обновить последовательность чисел в postgresql?

#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 .