Предположим, что есть таблица «элементы», которая имеет три столбца: «id», «pos» и «neg», а результат выбора должен быть упорядочен по результату операции pos - neg
.Postgres: Как получить номер строки при заказе по результату операции?
Таким образом, следующее должно работать:
SELECT
id,
pos - neg AS diff
FROM items
ORDER BY diff DESC
Теперь мне нужно получить позицию конкретной строки (в таблице) приказывать результат на «дифф». Я пробовал это:
WITH summary AS (
SELECT
i.id,
i.pos - i.neg AS diff,
ROW_NUMBER() OVER(ORDER BY diff) AS position
FROM items i)
SELECT s.* FROM summary s WHERE s.id = 351435254
но выполнение возвращает ERROR: столбец «diff» не существует.
Итак, можно ли получить позицию, или было бы лучше сохранить разницу в отдельной колонке?
дифф является псевдонимом попробовать 'ROW_NUMBER() OVER (ORDER BY I .pos - i.neg) AS position' вместо –
@ Рихард, который работает! Спасибо! – aspermag