sql >> Database >  >> RDS >> Mysql

Meerdere rijen tellen in MySQL in één query

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

Retourneert een tabel met één regel per item_id en bewerking , met drie kolommen:de item_id, het bewerkingstype en het aantal rijen met die item_id.

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

Je kunt de WHERE weglaten als je alle item_id's wilt, en je kunt bestellen in COUNT(*) om de meest populaire te krijgen of zoiets. Hangt ervan af wat u zoekt of hoe u de gegevens gebruikt.

Als u wilt dat de kolommen naast elkaar , gebruik een 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



  1. Verbind online mysql-database met de lokale xampp-server met behulp van php

  2. MYSQL Toegang geweigerd voor gebruiker 'root'@'localhost'

  3. MYSQL - Tijdstempelwaarden oplopend bestellen, van nieuwste naar oudste?

  4. MySQL - Deelnemen aan 2 tabellen