SELECT item_id, operation, COUNT(*)
FROM stats
WHERE operation IN ('view','purchase','download')
GROUP BY item_id, operation
प्रति आइटम_आईडी और संचालन के लिए एक पंक्ति के साथ एक तालिका लौटाएगा , जिसमें तीन कॉलम होते हैं:item_id, ऑपरेशन का प्रकार, और उस item_id के साथ पंक्तियों की संख्या।
1 view 3
1 purchase 5
2 download 7
3 download 1
यदि आप सभी आइटम_आईडी चाहते हैं तो आप 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