sql >> Databáze >  >> RDS >> Mysql

Počítání více řádků v MySQL v jednom dotazu

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

Vrátí tabulku s jedním řádkem na item_id a operaci obsahující tři sloupce:item_id, typ operace a počet řádků s tímto item_id.

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

Můžete vynechat WHERE, pokud chcete všechna item_id's, a můžete si objednat v COUNT(*), abyste získali nejoblíbenější nebo tak něco. Záleží, co hledáte nebo jak data používáte.

Pokud chcete, aby byly sloupce vedle sebe , použijte KDYŽ:

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



  1. Jak změnit tabulku přidání sloupce Oracle

  2. Jak klasifikovat, najít a maskovat PII v databázích…

  3. MySQL počet položek v klauzuli

  4. Vložit poddotaz do Výběrového dotazu