| From: | Oliver Kohll - Mailing Lists <oliver(dot)lists(at)gtwm(dot)co(dot)uk> |
|---|---|
| To: | Thom Brown <thombrown(at)gmail(dot)com> |
| Cc: | Magnus Hagander <magnus(at)hagander(dot)net>, pgsql-general <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: Cumulative count (running total) window fn |
| Date: | 2010-04-29 11:43:30 |
| Message-ID: | 20143EBA-E483-494E-B90E-F1FB954C5B30@gtwm.co.uk |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
>>
>> Aren't you looking for something along the line of:
>>
>> SELECT year, sum(c) over (order by year)
>> FROM (
>> SELECT extract(year from signup_date) AS year, count(email_address) AS c
>> FROM email_list
>> GROUP BY extract(year from signup_date)
>> )
>>
>> (adjust for typos, I didn't test it)
>
> Yes that does work thanks, if you give the subquery a name. I'd still like to know if it's possible to do with a window function rather than a subquery.
>
> Oliver Kohll
>
>
> Like this?:
>
> SELECT extract(year from signup_date), count(email_address), sum(count(email_address)) OVER (ORDER BY count(email_address)) FROM email_list GROUP BY 1 ORDER BY 1;
>
> Thom
Almost, but put me on the right track! This one is exactly what I'm looking for:
SELECT extract(year from signup_date), count(email_address), sum(count(email_address)) OVER (ORDER BY extract(year from signup_date)) FROM email_list GROUP BY 1 ORDER BY 1;
The ORDER BY count(email_address) did give the same results for my data but only because the count values just happen to give the same ordering as the years - I tested by changing some dates.
Many thanks all.
Oliver
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Magnus Hagander | 2010-04-29 11:44:53 | Re: Cumulative count (running total) window fn |
| Previous Message | A.Bhattacharya | 2010-04-29 11:34:29 | FW: Java Memory Issue while Loading Postgres library |