/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Sorter (order by) resultat på ugedag
Fra : Carzten Christensen


Dato : 05-10-04 19:14


Jeg er igang med et projekt, hvor det vil være nyttigt at kunne se
antal registreringer fordelt på ugedag.

Hver registrering har et timestamp, og jeg har forstået på
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
at jeg variablen "%W" kan hive ugedagen ud af et timestamp.


Det jeg er ude efter er en query i denne stil:
SELECT * from hotline_sag group by (UGEDAG)

Mit forsøg ser sådan ud, men virker ikke.
SELECT * from hotline_sag group by (date('tidspunkt',%W))

Så vidt jeg kan gennemskue, kan det lade sig gøre, men jeg er stærkt i
tvivl om syntaxen for GROUP BY klausulen.
Jeg er klar over at en måde at komme udenom dette var at registrere
ugedagen i databasen, men jeg har en ambition om senere at ville
forespørge på tidsintervaller (f.eks kl. 8-10, 10-12, 12-15)

Kan du svare på hvordan jeg sorterer mit resultat på ugedag ?

På forhånd tak

mvh, Carsten

 
 
Kristian Damm Jensen (05-10-2004)
Kommentar
Fra : Kristian Damm Jensen


Dato : 05-10-04 21:01


Carzten Christensen wrote:
> Jeg er igang med et projekt, hvor det vil være nyttigt at kunne se
> antal registreringer fordelt på ugedag.
>
> Hver registrering har et timestamp, og jeg har forstået på
> http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
> at jeg variablen "%W" kan hive ugedagen ud af et timestamp.

%W er ikke en variabel, men en option til date_format. Det er i øvrigt
ikke den du skal bruge, den giver navnet på ugedagen, hvilket giver en
spøjs sortering. Brug i stedet %w, der giver et tal mellem 0 og 6.

> Det jeg er ude efter er en query i denne stil:
> SELECT * from hotline_sag group by (UGEDAG)
>
> Mit forsøg ser sådan ud, men virker ikke.
> SELECT * from hotline_sag group by (date('tidspunkt',%W))
>
> Så vidt jeg kan gennemskue, kan det lade sig gøre, men jeg er
stærkt i
> tvivl om syntaxen for GROUP BY klausulen.
> Jeg er klar over at en måde at komme udenom dette var at registrere
> ugedagen i databasen, men jeg har en ambition om senere at ville
> forespørge på tidsintervaller (f.eks kl. 8-10, 10-12, 12-15)
>
> Kan du svare på hvordan jeg sorterer mit resultat på ugedag ?

Group by er i det fleste tilfælde kun meningsfuldt, hvis du ønsker at
tælle sammen eller lignende. Brug count(*) i dette tilfælde.

Du får dermed en select i stil med

select date_format('tidspunk', %w) as ugedagnr
, date_format('tidspunk', %W) as ugedag
, count(*) as antal
from T
group by ugedagnr, ugedag
order by ugedagnr

VH
Kristian


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste