Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中按工作日对总和进行分组?_Sql_Mysql_Aggregate Functions - Fatal编程技术网

如何在MySQL中按工作日对总和进行分组?

如何在MySQL中按工作日对总和进行分组?,sql,mysql,aggregate-functions,Sql,Mysql,Aggregate Functions,我有一张这样的桌子: 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 ------------------

我有一张这样的桌子:

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
最简单的解决方案是什么?
我不介意使用视图、变量、子查询等。

使用:

  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)

谢谢!这比我想象的要简单得多!