SELECT c.Client, s.Searchword, count(*)
FROM Stats s
INNER JOIN Clients c ON c.ClientID = s.ClientID
GROUP BY s.Searchword,
c.Client
ORDER BY c.Client
Denna select gruperar ihop sökorden/client och visar hur många gånger man sökt på det ordet.
Går det (så klart det går men hur!) att begränsa varje klients till 10?
Nu kan t.ex. klient "A" ha 40 sökord med x antal träffar på varje, jag vill bara visa 10 med högst antal träffar!
LarsGMedlem sedan dec. 200012 464 inlägg SELECT c.Client, s.Searchword, count(*)
FROM Stats s
INNER JOIN Clients c ON c.ClientID = s.ClientID
GROUP BY s.Searchword,
c.Client
having count(*) in (select top 10 count(*) as occ
from stats st
where st.clientid = c.clientid
group by searchword
order by occ desc)
ORDER BY c.Client
Väldigt nära! :)
Dock, vissa klienter visar ändå fler än 10 ord.
Det verkar som om, om antalet är lika så visas alla.
Ex, en klient blev så här:
klient1 ord1 234
klient1 ord2 232
klient1 ord3 211
klient1 ord4 200
klient1 ord5 165
klient1 ord6 154
klient1 ord7 134
klient1 ord8 123
klient1 ord9 90
klient1 ord10 80
klient1 ord11 80
klient1 ord12 80
rad 10, 11, 12 har alltså samma antal.
LarsGMedlem sedan dec. 200012 464 inlägg Jo, det är klart det blir så. Hur vill du välja mellan ord10, ord11 och ord12?
Hur vill du välja mellan ord10, ord11 och ord12?
Det spelar egentligen ingen roll, den kan sortera på orden i alfabetisk ordning. :)
LarsGMedlem sedan dec. 200012 464 inlägg SELECT c.Client, s.Searchword, count(*)
FROM Stats s
INNER JOIN Clients c ON c.ClientID = s.ClientID
GROUP BY s.Searchword,
c.Client
where searchWord in (select searchword
from (select top 10 searchword,count(*) as occ
from stats
where stats.clientid = s.clientid
group by searchword
order by occ desc, searchword)dt)
ORDER BY c.Client