Neem deze tabel(veldnamen zijn even fake maar maakt niet uit voor het idee):
Nu is het de bedoeling er een top 10 van itemids komt, dus een top 10 van hoevaak een bepaalde itemid voorkomt. MAAR, nu komt het struikelpunt, een groupid mag maar 1 keer in die top 10 voorkomen. Dus de meest voorkomende itemid in een groupid moet gepakt worden voor de top 10.
Deze query maakt een top10, met groupid nog niet uniek:
Dit was een ideetje maar werkt natuurlijk niet, en geeft precies hetzelfde resultaat:
Ik had verwacht hiermee een heel end te komen:
Maar dan is count altijd 1.
Ik heb nog een waslijst probeersels maar lijkt me een beetje overbodig hier erbij te posten nog.
Ik zit hier nu al tijden mee te worstelen, maar kom er niet uit. Kan iemand mij helpen de oplossing te vinden?
code:
1
2
3
4
5
| table ---------------- id int itemid int groupid int |
Nu is het de bedoeling er een top 10 van itemids komt, dus een top 10 van hoevaak een bepaalde itemid voorkomt. MAAR, nu komt het struikelpunt, een groupid mag maar 1 keer in die top 10 voorkomen. Dus de meest voorkomende itemid in een groupid moet gepakt worden voor de top 10.
Deze query maakt een top10, met groupid nog niet uniek:
SQL:
1
2
3
4
| SELECT `groupid`, `itemid`, COUNT(`itemid`) AS `count` FROM `table` GROUP BY `groupid`, `itemid` ORDER BY `count` DESC LIMIT 0, 10 |
Dit was een ideetje maar werkt natuurlijk niet, en geeft precies hetzelfde resultaat:
SQL:
1
2
3
4
| SELECT DISTINCT(`groupid`), `itemid`, COUNT(`itemid`) AS `count` FROM `table` GROUP BY `groupid`, `itemid` ORDER BY `count` DESC LIMIT 0, 10 |
Ik had verwacht hiermee een heel end te komen:
SQL:
1
2
3
4
5
6
7
8
| SELECT `groupid`, `itemid`, count(2) AS `count` FROM ( SELECT `groupid`, `itemid` FROM `table` GROUP BY `groupid`, `itemid` ) AS `subtable` GROUP BY `groupid`, `itemid` ORDER BY `aantal` DESC LIMIT 0,10 |
Maar dan is count altijd 1.
Ik heb nog een waslijst probeersels maar lijkt me een beetje overbodig hier erbij te posten nog.
Ik zit hier nu al tijden mee te worstelen, maar kom er niet uit. Kan iemand mij helpen de oplossing te vinden?