2010-11-29 3 views
3

У меня есть таблица вроде этого:Как группировать суммы по будням в 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 

и мне нужно подсчитать строки для каждого типа, сгруппированные по будний день; например:

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 

Какое будет простейшее решение для этого?
Я не против использования представлений, переменные, подзапросы и т.д.

ответ

5

Используйте:

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

Спасибо большое! Это было намного проще, чем я думал! – arturo 2010-11-29 19:48:17

Смежные вопросы