Search Postgresql Archives

R: R: complex custom aggregate function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>-----Messaggio originale-----
>Da: pgsql-general-owner@xxxxxxxxxxxxxx [mailto:pgsql-general-owner@xxxxxxxxxxxxxx] Per conto di Scara Maccai
>Inviato: lunedì 2 febbraio 2009 10.36
>A: Paolo Saudin; pgsql-general@xxxxxxxxxxxxxx
>Cc: pgsql-general
>Oggetto: Re: R:  complex custom aggregate function

> Paolo Saudin wrote:
> For that purpose, a sliding mean calculation I use the following
> 
> CREATE TABLE tbl_ayas
> (
>   fulldate timestamp without time zone NOT NULL,
>   id_1 real, -- temperature
>   id_2 real, -- pressure
>   ..........
>   CONSTRAINT tbl_ayas_pkey PRIMARY KEY (fulldate)
> ) WITH (OIDS=FALSE);
> 
> [...]

> Select perl_sliding_mean(0,0,0,0,'f','t');
> SELECT perl_sliding_mean(0," id_1 ", 8, 6, 'f', 'f') AS numeric), 1) AS 
> "ayas_temperature",
>      perl_sliding_mean(1," id_2 ", 8, 6, 'f', 'f') AS numeric), 1) AS 
> "ayas_pressure"


>I don't understand: how can you be sure that data is passed to the function ordered by "fulldate"?
>Thank you.

I use a master table with a "fulldate" field and filled with sequential dates to fill gaps when meteo data is missing.

CREATE TABLE master
(
  fulldate timestamp without time zone NOT NULL,
  CONSTRAINT master_pkey PRIMARY KEY (fulldate)
) WITH (OIDS=FALSE);

So the query will be:
SELECT 
	fulldate, id_3 AS "ayas_temperature" ,
	round(cast(perl_sliding_mean(0,id_3, 8, 6, 'f', 'f') AS numeric), 3) AS "ayas_temperature_sliding"
FROM 
	_master LEFT JOIN tables_ar.tbl_ayas USING(fulldate)
WHERE 
	fulldate > '2009-01-01'
ORDER BY fulldate limit 16;

01/01/2009 1.00	-7	
01/01/2009 2.00	-7,1	
01/01/2009 3.00	-5,3	
01/01/2009 4.00	-5,2	
01/01/2009 5.00	-4,8	
01/01/2009 6.00	-4	
01/01/2009 7.00	-4,3	
01/01/2009 8.00	-5,2	-5,363	( mean from 01/01/2009 1.00 - 01/01/2009 8.00 )
01/01/2009 9.00	-5,4	-5,163	...............................................
01/01/2009 10.00	-3	-4,65		...............................................
01/01/2009 11.00	-0,4	-4,038	...............................................
01/01/2009 12.00	0,4	-3,338	...............................................
01/01/2009 13.00	-0,2	-2,763	...............................................
01/01/2009 14.00	-1,8	-2,488	...............................................
01/01/2009 15.00	-2,2	-2,225	...............................................
01/01/2009 16.00	-2,6	-1,9		( mean from 01/01/2009 9.00 - 01/01/2009 16.00 )

And all the sliding means are correct ( from the 8th value ahead)

Paolo Saudin


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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux