Avatar billede ihtezaz Praktikant
15. februar 2010 - 10:25 Der er 12 kommentarer og
1 løsning

Brug af having og group by

Hej,

Jeg har en tabel kaldet "k".
I tabellen har jeg en kolonne kaldet medlemnnr og en kaldet klubnr.

En medlemsnr kan stå flere gange med samme klubnr. Jeg vil gerne vide det samlede antal af medlemmer der står mere end 1 gang med samme klubnr grupperet i klubnr orden.

Dvs. hvis nedenstående er min tabel:
Klubnr  medlemsnr
120      12012
121      89439
120      12012

Så vil gerne have at min query returner:

klubnr  antal

120      2
Avatar billede showsource Seniormester
15. februar 2010 - 10:34 #1
SELECT COUNT(*) as antal FROM k GROUP BY medlemsnr HAVING antal > 1

utestet
Avatar billede ihtezaz Praktikant
15. februar 2010 - 10:42 #2
Det returner kun antal over 1. jeg vil gerne se hvor mange
dubletter hvert klub har. Hvis klub 120 har 200 medlemer der opstår 2 gange, så skal det stå sådan:

klub  antal
120    400
Avatar billede showsource Seniormester
15. februar 2010 - 10:48 #3
Ja, skal nok være så'n:

SELECT klubnr, COUNT(*) as antal FROM k GROUP BY klubnr HAVING antal > 1 ORDER BY klubnr
Avatar billede ihtezaz Praktikant
15. februar 2010 - 10:54 #4
heller ikke :).. det har jeg forsøgt med. Sådan returner den
bare det hele ud fra de enkelte klubber, da den her bare siger returner alle de klubber der har mere end 1 medlem.
Avatar billede showsource Seniormester
15. februar 2010 - 11:03 #5
Nu er jeg ikke helt med, men måske:

SELECT klubnr, COUNT(*) as antal FROM k GROUP BY klubnr, medlemsnr HAVING antal > 1 ORDER BY klubnr
Avatar billede ihtezaz Praktikant
15. februar 2010 - 11:16 #6
Nope..:) Den skal ikke returner antal medlemmer i de enkelte klubber, men antal af dubletter(samme medlemsnr optræder flere end 1 gang ud for det samme klubnr) i de enkelte klubber.
Avatar billede showsource Seniormester
15. februar 2010 - 12:06 #7
Nåh, jeg må gi' op.
Måske arne_v kikker forbi på et tidspunkt ? :O)
Avatar billede ihtezaz Praktikant
15. februar 2010 - 12:10 #8
Det helt ok, tak alligevel :). Ja det håber jeg også han gør
Avatar billede showsource Seniormester
15. februar 2010 - 12:20 #9
Bortset fra det, så vil det jo være muligt at "fixe det" når der skal laves output.
Avatar billede sgaardbo Nybegynder
15. februar 2010 - 12:55 #10
Hmm, mon ikke man har brug for en subquery, hvor inderste query foretager en optælling som showsource foreslår, og hvor den yderste grupperer og optæller på klubnr?

Som:

select klubnr, count(*) as DubAntal
from
(
    select  klubnr as klubnr
    from k
    group by klubnr, medlemsnr
    having count(*) > 1
) sub
group by klubnr
having count(*) > 1
order by klubnr
Avatar billede ihtezaz Praktikant
15. februar 2010 - 13:08 #11
Hurraaa.. lige hvad jeg manglede :).
Smid et svar sgaardbo
Avatar billede sgaardbo Nybegynder
15. februar 2010 - 13:13 #12
Godt at høre.
Avatar billede showsource Seniormester
17. februar 2010 - 16:01 #13
Den query var jeg aldrig nogensinde kommet på !
Og som altid, er det sgu rart at lære noget nyt !!!
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