Avatar billede oasen Nybegynder
22. maj 2002 - 05:28 Der er 8 kommentarer og
2 løsninger

Group By Dato og tæl antal records

Jeg har brug for at udvælge de ti nyeste datoer. Dvs. de 10 grupper af records, hvor hver gruppe har en dato tilfælles.
Datoformatet er som følger: 22-05-2002.
Der skal optælles hvor mange records, der indeholder hver af de ti datoer og datoerne udskrives i den rækkefølge de står i i tabellen. Dvs. de nyeste sidst.

Jeg fik det gjort med left(Date,2) og nogle løkker med arrays, men det blev lidt "tungt". Det må kunne laves rimelig simpelt med en SQL.
Var det til at forstå?

strSQL="SELECT Dato, count(*) AS Antal FROM besoegtab GROUP BY Dato"
Set rs = Conn.execute(strSQL)

Og...?
Avatar billede askhoej Praktikant
22. maj 2002 - 08:26 #1
Hvis du bruger Access så er det vist sådan her:

SELECT TOP10 count(*) as antal, dato
FROM besoegtab
GROUP BY dato
Avatar billede tmceu Praktikant
22. maj 2002 - 09:17 #2
+ ORDER BY Dato DESC hvis du vil have de nyeste
Avatar billede curriculum Nybegynder
22. maj 2002 - 11:13 #3
MySQL:
strSQL="SELECT " &_
  "count(*) as antal, " &_
  "dato " &_
  "FROM besoegtab " &_
  "GROUP BY dato " &_
  "ORDER BY dato DESC LIMIT 10"

NB: GROUP BY dato er lidt overflødigt.

/Curriculum
Avatar billede oasen Nybegynder
22. maj 2002 - 14:42 #4
LIMIT? Er det ikke i PHP?

Jeg kan vel ikke bruge order by dato, når datoen har dansk format!?
Avatar billede oasen Nybegynder
22. maj 2002 - 14:52 #5
tmceu ---> Man kan da ikke bruge order by og group by i samme SQL!?
Avatar billede curriculum Nybegynder
22. maj 2002 - 15:06 #6
LIMIT er til MySQL (som oftest bliver anvendt i PHP, men kan godt anvendes til ASP også) .. f.eks. kører www.eksperten.dk med MySQL

Hviklen database bruger du (Access, MS SQL, MySQL) ??

/Curriculum
Avatar billede curriculum Nybegynder
22. maj 2002 - 15:10 #7
"ORDER BY" og "GROUP BY" kan sagtens være i samme SQL streng. Det kan f.eks. bruges nemlig til, hvor det skal hentes "count(*)" fra en tabel.

/Curriculum
Avatar billede oasen Nybegynder
22. maj 2002 - 16:04 #8
Nå, det var jeg ikke klar over, men databasen er i hvertfald en Access 2k
Avatar billede tmceu Praktikant
22. maj 2002 - 16:42 #9
oasen >> man lærer hver dag. Eksempelvis lærte du idag at LIMIT er en MySQL funktion og at ORDER BY fungerer fint med GROUP BY. Og så har det ikke engang kostet dig point :-D
Avatar billede oasen Nybegynder
22. maj 2002 - 17:37 #10
Ja, det er dejligt, men jeg har ændret datoformatet til YYYYMMDD - på den måde kan jeg med fordel bruge:

strSQL="SELECT Dato, count(*) AS Antal FROM besoegtab GROUP BY Dato Order By Dato Desc"

Så må jeg jo bare omskrive til dansk format, når datoerne skal udskrives:

Mid(rs("Dato"), 7, 2) & "/" & Mid(rs("Dato"), 5, 2) & "-" & Left(rs("Dato"), 4)

Tak for hjælpen :)
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
Kurser inden for grundlæggende programmering

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