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
如果您想要所有 item_id,则可以省略 WHERE,并且可以在 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