SELECT item_id, operation, COUNT(*)
FROM stats
WHERE operation IN ('view','purchase','download')
GROUP BY item_id, operation
Вернет таблицу с одной строкой для item_id и операцией , содержащей три столбца: item_id, тип операции и количество строк с этим item_id.
1 view 3
1 purchase 5
2 download 7
3 download 1
Вы можете опустить WHERE, если вы хотите все item_id, и вы можете заказать в COUNT (*), чтобы получить самый популярный или что-то в этом роде. Зависит от того, что вы ищете или как вы используете данные.
Если вы хотите, чтобы столбцы находились рядом друг с другом , используйте IF:
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