2010-11-29 58 views
3

J'ai une table comme ceci:Comment grouper des sommes par jour dans MySQL?

id | timestamp | type 
----------------------- 
1 2010-11-20 A 
2 2010-11-20 A 
3 2010-11-20 B 
4 2010-11-21 A 
5 2010-11-21 C 
6 2010-11-27 B 

et je dois compter les lignes pour chaque type, regroupées par semaine; comme ceci:

weekday | A | B | C 
-------------------------- 
5   2  2  0 -- the B column equals 2 because nov 20 and nov 27 are saturday 
6   1  0  1 

Quelle serait la solution la plus simple pour cela?
Je ne me dérange pas d'utiliser des vues, variables, etc., sous-requêtes

Répondre

5

Utilisation:

SELECT WEEKDAY(t.timestamp) AS weekday, 
     SUM(CASE WHEN t.type = 'A' THEN 1 ELSE 0 END) AS a, 
     SUM(CASE WHEN t.type = 'B' THEN 1 ELSE 0 END) AS b, 
     SUM(CASE WHEN t.type = 'C' THEN 1 ELSE 0 END) AS c 
    FROM YOUR_TABLE t 
GROUP BY WEEKDAY(t.timestamp) 
+0

Merci beaucoup! C'était beaucoup plus simple que je ne le pensais! – arturo