Top tio?

Databaser & SQL

12 svar · 303 visningar · startad av webbmannen

Medlem sedan dec. 1999826 inlägg
Trådstart#1

Den här raden:

SQL = "SELECT [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY [ref]"

fixar så att jag får refererande siter sammanräknade och presenterade i en tabell.

Nu blir det ju lite mycket med tiden, och jag undrar hur man skriver för att bara visa tex de 10 siter med flest träffar listade med högst antal överst.

/webb

Medlem sedan dec. 200012 464 inlägg
#2

Så här kanske


SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY links desc"
Medlem sedan dec. 1999826 inlägg
#3

Bra försök LarsG men det gick inte:

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/webb

Medlem sedan dec. 200012 464 inlägg
#4

Access, hmm.
Så här då

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 1"
Medlem sedan dec. 1999826 inlägg
#5

Fortfarande så listas inte de med flest träffar i fallade skala.

/webb

Medlem sedan juni 200032 967 inlägg
#6

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 1 DESC"

Medlem sedan dec. 1999826 inlägg
#7

Jag har, redan innan mitt första inlägg, försökt med både top 10 och DESC.

Problemet som inte är löst är att DESC inte påverkar de sammansräknade träffarna links utan går på de senaste [ref].

/webb

Medlem sedan dec. 200012 464 inlägg
#8

Strulade lite, sorry.

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 2 desc"

Siffran anger att man skall sortera efter andra kolumnnen i select-listan

Medlem sedan dec. 1999826 inlägg
#9

Aha! nu lärde jag mig något nytt :)

Förstod inte vad siffran hade för betydelse tidigare men är nu lite klokare. Det fungerade dessutom :e

Däremot så ville nu plötsligt inte "top 10" fungera längre :q Finns det ett annat sätt att skriva detta på eller måste jag göra en loop och på det sättet begränsa antalet visade poster?

/webb

Medlem sedan dec. 200012 464 inlägg
#10

Top 10 betyder att man får 10 plus delningar så det kan bli mer än 10 om du har flera länkar med samma antal träffar.

Medlem sedan dec. 1999826 inlägg
#11

Oki fattar, men det finns alltså inget annat alternativ än en loop om man som jag har, flera träffar på samma antal, och endast vill visa de tio med högsta antalet? (dvs. bryta just där trots att det finns fler med samma antal).

/webb

Medlem sedan dec. 200012 464 inlägg
#12

Ja det är ett sätt att bryta loopen, men i ditt fall så skulle du kunna ta med Ref-kolumnen i order by och då skulle det inte bli någon delning.

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 2 desc, 1 "
Medlem sedan dec. 1999826 inlägg
#13

Stort tack LarsG, du har lärt mig nyttiga saker idag :)

/webb

253 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)