Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zählen mehrerer Zeilen in MySQL in einer Abfrage

SELECT item_id, operation, COUNT(*) 
FROM stats 
WHERE operation IN ('view','purchase','download') 
GROUP BY item_id, operation

Gibt eine Tabelle mit einer Zeile pro item_id und Vorgang zurück , die drei Spalten enthält:die item_id, den Vorgangstyp und die Anzahl der Zeilen mit dieser item_id.

1 view 3
1 purchase 5
2 download 7
3 download 1

Sie können das WHERE weglassen, wenn Sie alle item_ids haben möchten, und Sie können in COUNT(*) bestellen, um die beliebtesten oder ähnliches zu erhalten. Hängt davon ab, wonach Sie suchen oder wie Sie die Daten verwenden.

Wenn Sie die Spalten nebeneinander möchten , verwenden Sie ein 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