Avatar billede mikkels Nybegynder
25. september 2006 - 18:55 Der er 13 kommentarer og
1 løsning

selecte ud fra intervaller

hej
jeg har en tabel hvor hver række bla. indeholder alder.

! navn: ! alder: !
! ib    ! 5      !
! bo    ! 3      !
! ole  ! 23    !

Jeg skal nu have udtrukket fx antal rækker for personer mellem 0 - 10 år, 11 - 10 år, 21 - 30 år osv osv...
kan det lade sig gøre med een sql sætning?
noget a la: select count(*) from tabel1 where alder between 0-10,11-20....

ønsket resultat:
! alder ! antal !
! 0-10  ! 2    !
! 11-20 ! 0    !
! 21-30 ! 1    !
Avatar billede hmortensen Nybegynder
25. september 2006 - 19:44 #1
Måske sådan her:
(SELECT '0-10', COUNT(*) FROM tabel WHERE alder BETWEEN 0 AND 10)
UNION
(SELECT '11-20', COUNT(*) FROM tabel WHERE alder BETWEEN 11 AND 20)
Avatar billede mikkels Nybegynder
25. september 2006 - 21:07 #2
Præcis hvad jeg havde brug for! smid et svar, så får du points...
Avatar billede hmortensen Nybegynder
25. september 2006 - 21:28 #3
Svar.
Avatar billede arne_v Ekspert
26. september 2006 - 04:30 #4
alternativt approach som kan bruges hvis intervallerne er systematiske:

SELECT FLOOR((alder-1)/10)*10+1,FLOOR(alder/10+1)*10,COUNT(*)
FROM person
GROUP BY FLOOR((alder-1)/10)*10+1,FLOOR(alder/10+1)*10;
Avatar billede bimbambusse Nybegynder
26. september 2006 - 10:02 #5
arne_v: Så vidt jeg kan se vil dit select ikke returnere intervaller uden rækker - altså svarende til den 2. række i det ønskede resultatset.

Men måske jeg tager fejl :o)
Avatar billede arne_v Ekspert
26. september 2006 - 13:14 #6
du tager ikke fejl

men jeg ved ikke om det er vigtigt for spøger
Avatar billede mikkels Nybegynder
26. september 2006 - 13:31 #7
Hmm - det er faktisk vigtigt også at rækken ud selvom der ikke er noget resultat...
Men det kommer der desværre heller ikke ud fra det svar hmortensen har givet... har prøvet med en CASE osv men uden held..
Avatar billede arne_v Ekspert
26. september 2006 - 16:10 #8
mystisk

en COUNT burde da returnere 0
Avatar billede hmortensen Nybegynder
26. september 2006 - 17:32 #9
Det virker som det skal i mySQL, kan ikke svare for Oracle, men det burde være det samme.
Avatar billede Slettet bruger
26. september 2006 - 18:19 #10
nvl returnerer 0 hvis select er null
måske du kan bruge den

select nvl(kolonne,0) from tabel
Avatar billede Slettet bruger
26. september 2006 - 18:20 #11
arne_v - hvad gør "floor" kommandoen ??
Avatar billede arne_v Ekspert
26. september 2006 - 19:33 #12
runder ned
Avatar billede Slettet bruger
26. september 2006 - 20:08 #13
som round((x/y),0) måske ?
Avatar billede arne_v Ekspert
30. september 2006 - 02:34 #14
nej - den runder af
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