SQL вычесть первую строку из всех выбранных строк - PullRequest
4 голосов
/ 22 декабря 2010

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

t = 1, v = 500
t = 2, v = 800
t = 3, v = 1200

Я бы получил

t = 1, v = 0
t = 2, v = 300
t = 3, v = 700

Я всегда ищу портативное решение, но решение Postgres работает точно так же :-) Спасибо.

Ответы [ 3 ]

5 голосов
/ 22 декабря 2010
SELECT  v - FIRST_VALUE(v) OVER (ORDER BY t)
FROM    mytable
ORDER BY
        t
1 голос
/ 22 декабря 2010

Как то так может работать

SELECT mt2.t, mt2.v - mt1.v AS v
FROM MyTable mt1
CROSS JOIN MyTable mt2
WHERE mt1.t = 1
0 голосов
/ 22 декабря 2010

Самый переносимый способ без использования оконных функций:

select v - first
from
  mytable,
  (select v as first from mytable order by t limit 1) as inner
order by t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...