Re: How can I calculate differences between values
От | Vyacheslav Kalinin |
---|---|
Тема | Re: How can I calculate differences between values |
Дата | |
Msg-id | 9b1af80e0911100649t3c23369ch6d8f33f0f817a652@mail.gmail.com обсуждение исходный текст |
Ответ на | How can I calculate differences between values (A B <gentosaker@gmail.com>) |
Ответы |
Re: How can I calculate differences between values
|
Список | pgsql-general |
With 8.4's analytic capabilities you can do this:
select * from (
select userid, data - lag(data) over (partition by userid order by data) diff
from foo) q
where diff is not null;
On Tue, Nov 10, 2009 at 5:40 PM, A B <gentosaker@gmail.com> wrote:
Hello there!
I have a table foo( userid integer, data integer); with the
constraint unique(userid,data)
Now I wish to select one userid and calculate the differences between
the data -values (when they are sorted) .
For example
if the table contains:
4, 100
5, 200
5, 210
5, 231
I want the values
5,10
5,21
what should happen to the 4,100 record you may ask, I will try to
exclude that case by requireing each userid to have at least two data
values.
The question is now: is there a clever and efficient way of
calculating these differences in data values?
The only thing I can think of is picking a data value and
select min(data) from foo where userid=5 and data>200
and then calculate the difference and do what I want with it, and the
repeat this process with the last selected data value.
I guess that will work, but I'm curious, are there other ways?
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
В списке pgsql-general по дате отправления: