Avatar billede badmanndk Nybegynder
25. maj 2004 - 11:38 Der er 12 kommentarer og
2 løsninger

Select top 10 distint.

Jeg har et lille problem.
Jeg har en MySQL db, der hedder statistik, hvor jeg har en kolonne der hedder referer.
Nu vil jeg gerne vise en top 10 over disse referer.
men først skal der jo tælles hvilket referers der er flest af, og bagefter vise en liste på 10 sorteret efter dem der er flest af.

Håber i forstår spm.
på forhånd tak
Avatar billede fsconsult.dk Nybegynder
25. maj 2004 - 11:54 #1
select referer,count(*) from statistik group by referer order by count(*) desc;
Avatar billede fsconsult.dk Nybegynder
25. maj 2004 - 11:55 #2
eller måske:

select referer,count(*) as antal from statistik group by referer order by antal desc;
Avatar billede badmanndk Nybegynder
25. maj 2004 - 12:14 #3
den første virker ikke: invalid function of "group by"

og den anden skriver det totale antal referer i DB'en
Avatar billede badmanndk Nybegynder
25. maj 2004 - 12:15 #4
forkert fejlmeddelse jeg skrev før, det er : Invalid use of group function
Avatar billede badmanndk Nybegynder
25. maj 2004 - 13:16 #5
skal man lave 2 SQL sætninger for at det virker..?
F.eks. først en der finder "distinct referer" og den anden tæller dem sammen.?
Avatar billede dennismp Nybegynder
26. maj 2004 - 00:03 #6
SELECT referer, count(1)
FROM incoming
GROUP BY referer
ORDER BY 2 desc
LIMIT 10;
Avatar billede dennismp Nybegynder
26. maj 2004 - 00:04 #7
glem det, jeg kan se at fsconsult har allerede forslået det:)
Avatar billede badmanndk Nybegynder
26. maj 2004 - 09:55 #8
men det må være noget i den stil..?? jeg syntes bare at jeg har prøvet alt efterhånden
Avatar billede dennismp Nybegynder
26. maj 2004 - 22:03 #9
Jeg har selv en tabel der indeholder referer - sql'en virker fint her (den er paste derfra). Hvad skriver du af sql? hvordan ser din tabel ud?
Avatar billede badmanndk Nybegynder
29. maj 2004 - 16:05 #10
Jeg har en tabel der hedder statistik, hvor der er en række der hedder referer.
du skriver i SQL'n count(1), skal der være et 1 tal, det samme med ORDER BY 2, skal de bare være et 2 tal.?
Avatar billede dennismp Nybegynder
29. maj 2004 - 16:17 #11
Du kan sagents skrive count(*) det giver det samme. Order by 2 betyder bare at man sorterer på 2. kolonne.

Du kan alternativt skrive:

SELECT referer, count(*) as hits
FROM incoming
GROUP BY referer
ORDER BY hits desc
LIMIT 10;

Det bør gøre det samme
Avatar billede badmanndk Nybegynder
30. maj 2004 - 13:14 #12
dennismp -->

SELECT referer, count(*) as hits
FROM statistik
GROUP BY referer
ORDER BY hits desc
LIMIT 10

Denne giver bare det totale antal referers, i dette tilfælde 9231
Avatar billede dennismp Nybegynder
30. maj 2004 - 13:19 #13
Hvordan ser rækkerne ud? Har de samme referer?
Avatar billede badmanndk Nybegynder
18. august 2004 - 13:58 #14
havde helt glemt dette spørgsmål.. det må i undskylde.. jeg har dog opgivet dette problem, men i kan dele pointene som tak for hjælp
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