SELECT item_id, operation, COUNT(*)
FROM stats
WHERE operation IN ('view','purchase','download')
GROUP BY item_id, operation
Sẽ trả về một bảng có một dòng cho mỗi item_id và thao tác , chứa ba cột:item_id, loại hoạt động và số hàng có item_id đó.
1 view 3
1 purchase 5
2 download 7
3 download 1
Bạn có thể bỏ qua WHERE nếu bạn muốn tất cả item_id's và bạn có thể đặt hàng ở COUNT (*) để nhận được món phổ biến nhất hoặc thứ gì đó. Phụ thuộc vào những gì bạn đang tìm kiếm hoặc cách bạn sử dụng dữ liệu.
Nếu bạn muốn các cột bên cạnh eachother , sử dụng 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