GROUP BY dle datetime?

Karel Zak zakkr na zf.jcu.cz
Pondělí Únor 12 15:00:15 CET 2001


On Mon, 12 Feb 2001, Zdenek Kotala wrote:


> Resim podobny problem (lisi se pouze tim ze delam sumu po 5 minutach),
> ale komplikovanejsi je to
> v tom, ze potrebuji delat group pres dve polozky (cas a objekt, ktereho
> se to tyka).
> Tabulka ma pre milion zaznamu (velikost zaznamu je <100B) a jaksi dotaz:
> 
> SELECT time, sum(p1), sum(p2), sum(p3), zarizeni 
> FROM tabulka
> GROUP by zarizeni, time
> 
> skonci hlasenim postgresu, ze dosla pamet. Polozka time je predpocitana,
> aby byl cas rozdelen 
> na petiminutove intervaly.
> 
> Potreboval bych poradit jak dotaz preformulovat a  nebo pripadne
> rozdelit.

 Hmm, mozna nejdrive udelat spojeni tech polozek pro group by do jedne
a pak teprve group by:

 select p1, p2, p3, time || zarizeni as grupator into temp 
mytemp from tabulka;

 select grupator, sum(p1), sum(p2), sum(p3) from mytemp
group by grupator;

 ...ale rikam rovnou rada je to blba a nejsem si jist kolik pameti to 
usetri.

 Nejlepsi by bylo rozdelit tu tabulku na mensi tabulky a pak udelat:

insert into mezisoucet select ... from t1 group by zarizeni, time;
insert into mezisoucet select ... from t2 group by zarizeni, time;
	.
	.
insert into mezisoucet select ... from t(n) group by zarizeni, time; 

select ... from mezisoucet by zarizeni, time;

			Karel



Další informace o konferenci Databases