SELECT item_id, operation, COUNT(*)
FROM stats
WHERE operation IN ('view','purchase','download')
GROUP BY item_id, operation
Retournera un tableau avec une ligne par item_id et opération , contenant trois colonnes :l'item_id, le type d'opération et le nombre de lignes avec cet item_id.
1 view 3
1 purchase 5
2 download 7
3 download 1
Vous pouvez omettre WHERE si vous voulez tous les item_id, et vous pouvez commander en COUNT(*) pour obtenir le plus populaire ou quelque chose comme ça. Cela dépend de ce que vous recherchez ou de la manière dont vous utilisez les données.
Si vous voulez que les colonnes soient à côté les unes des autres , utilisez un SI :
SELECT s1.item_id, SUM( IF( s1.operation = 'view', 1, 0 ) ) views, SUM( IF( s1.operation = 'download', 1, 0 ) ) downloads, SUM( IF( s1.operation = 'purchase', 1, 0 ) ) purchases
FROM stats s1
GROUP BY s1.item_id
item_id | views | downloads | purchases
1 | 3 | 0 | 5
2 | 0 | 7 | 0
3 | 0 | 1 | 0