Avatar billede bamzen Nybegynder
06. januar 2004 - 21:38 Der er 1 løsning

Tricky Group by, men hvordan - KÆMPE udfordring

Der er godt nok dømt streetrespect hvis du kan hjælpe med at greje denne udfordring

Hej, jeg har en tabel hvor jeg har et tidsstempel i datetime format i feltet A og en talværdi i feltet B og en brugerid i feltet C

hvert tidsinterval er med 15 min mellemrum

nu vil jeg gerne kunne søge på en datetime i et specifik mellemrum, have returneret et gennemsnit i forskellige af værdierne i mit værdi felt B

Nu vil jeg gerne kunne returnere en liste af gennemsnitsværdier pr time, pr dag, pr uge, pr md, pr år indenfor det givne interval bare en af gangen, altså eksempelvis pr dag

(her er jeg forlængst gået død på syntaxen, og om det overhovedet er muligt)

Det næste ønske, er hvis jeg jeg søger efter gennemsnitsværdier pr time, så vil jeg have 12 timer fra starttidspunktet.

Hvis jeg søger efter dage, vil jeg have gennemsnit per dag i 7 dage fra starttidspunkt

hvis jeg søger efter uger vil jeg returnere gennemsnitsværdier for 13 uger fra starttid

hvis jeg søger på måneder vil jeg returnere gennemsnitsværdier for 12 mdr fra starttid

Hvis jeg søger på år, vil jeg have så have noget lidt specielt... nemlig gennemsnits værdier for 3 mdr af gangen 3år fra starttid


Det sidste ønske, som dog ikke er streng nødvendigt, er at jeg kan lave ovenstående søgninger men på X antal brugere af gangen, dvs eksempelvis bruger1 og bruger2, og så gruppere disse som det første.... 

Lidt pseuodo kode kunne være noget ala:
jeg har php 4.2.2 og mysql 4.0.17

$start="2003-05-29 12:00:00";
Select A,AVG(B),C from mytable where A>='$start' AND A<='$start+(12 hours)' group by uid,hour(A)
eller
Select A,AVG(B),C from mytable where A>='$start' AND A<='$start+(13 weeks)' group by uid,week(A)
eller
Select A,AVG(B),C from where mytable A>='$start' AND A<='$start+(12 months)' group by uid,month(A)
eller
Select A,AVG(B),C from mytable where A>='$start' AND A<='$start+(3 years)' group by uid,month(A+(A+1))
Avatar billede bamzen Nybegynder
13. februar 2004 - 13:57 #1
lukker igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester