Re: [GENERAL] Statistical aggregates with intervals

2012-08-23 Thread Christopher Swingley
Thomas,

On Wed, Aug 22, 2012 at 12:25 PM, Thomas Munro  wrote:
> I noticed that 'avg' works on 'interval', but 'stddev' and 'variance' don't:

I don't know why, but you could convert 'interval' into something else
where all the functions work:

CREATE OR REPLACE FUNCTION interval_to_seconds(interval)
RETURNS double precision AS $$
SELECT (extract(days from $1) * 86400)
 + (extract(hours from $1) * 3600)
 + (extract(minutes from $1) * 60)
 + extract(seconds from $1);
$$ LANGUAGE SQL;

Cheers,

Chris
-- 
Christopher Swingley
Fairbanks, Alaska
http://swingleydev.com/
cswin...@gmail.com


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Statistical aggregates with intervals

2012-08-23 Thread Ondrej Ivanič
Hi,

On 24 August 2012 07:39, Christopher Swingley  wrote:
> I don't know why, but you could convert 'interval' into something else
> where all the functions work:
>
> CREATE OR REPLACE FUNCTION interval_to_seconds(interval)
> RETURNS double precision AS $$
> SELECT (extract(days from $1) * 86400)
>  + (extract(hours from $1) * 3600)
>  + (extract(minutes from $1) * 60)
>  + extract(seconds from $1);
> $$ LANGUAGE SQL;

Looks complicated. You can extract 'epoch':
db=# select now() - (now() - interval '1 day');
 ?column?
--
 1 day
(1 row)

db=# select extract(epoch from (now() - (now() - interval '1 day')));
 date_part
---
 86400
(1 row)


-- 
Ondrej Ivanic
(ondrej.iva...@gmail.com)


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general