GROUP BY dle datetime?

Zdenek Kotala zdenek.kotala na mius.cz
Pondělí Únor 12 15:41:12 CET 2001


Karel Zak wrote:
> 
> 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.

Nevim kolik to usetri :(, protoze mu stejne dojde pamet a to uz pri tom
prvnim selectu do te pomocne databaze.

>  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;

No tomu jsem se chtel vyhnout, ale nic jineho mi nezbude. Diky za radu.

			Zdenek Kotala


Další informace o konferenci Databases