mysql - MYSQL中的分组列,复杂查询

标签 mysql sql database

我有这个 MYSQL 查询,我需要将列分组在一起,我似乎做不到....

SELECT Supervisor,
   (CASE WHEN DAYOFWEEK(workdate) = 2 THEN (COUNT(`ID Number`)) END) AS `Monday`,
   (CASE WHEN DAYOFWEEK(workdate) = 3 THEN (COUNT(`ID Number`)) END) AS `Tuesday`,
   (CASE WHEN DAYOFWEEK(workdate) = 4 THEN (COUNT(`ID Number`)) END) AS `Wednesday`,
   (CASE WHEN DAYOFWEEK(workdate) = 5 THEN (COUNT(`ID Number`)) END) AS `Thursday`,
   (CASE WHEN DAYOFWEEK(workdate) = 6 THEN (COUNT(`ID Number`)) END) AS `Friday`,
   (CASE WHEN DAYOFWEEK(workdate) = 7 THEN (COUNT(`ID Number`)) END) AS `Saturday`
FROM payroll.employeedatanew_copy
INNER JOIN payroll.employeehours ON employeedatanew_copy.`ID Number` = employeehours.employeeid
WHERE workdate BETWEEN "2013-10-28" AND "2013-11-02"
GROUP BY workdate, supervisor

这是我的结果: http://i.stack.imgur.com/l9kSz.png

这就是我想要的: http://i.stack.imgur.com/bRNmJ.png

最佳答案

我猜你正在寻找这个:

SELECT Supervisor,
   COUNT(CASE WHEN DAYOFWEEK(workdate) = 2 THEN 1 END) `Monday`,
   COUNT(CASE WHEN DAYOFWEEK(workdate) = 3 THEN 1 END) `Tuesday`,
   COUNT(CASE WHEN DAYOFWEEK(workdate) = 4 THEN 1 END) `Wednesday`,
   COUNT(CASE WHEN DAYOFWEEK(workdate) = 5 THEN 1 END) `Thursday`,
   COUNT(CASE WHEN DAYOFWEEK(workdate) = 6 THEN 1 END) `Friday`,
   COUNT(CASE WHEN DAYOFWEEK(workdate) = 7 THEN 1 END) `Saturday`
FROM payroll.employeedatanew_copy
JOIN payroll.employeehours ON employeedatanew_copy.`ID Number` = employeehours.employeeid
WHERE workdate BETWEEN "2013-10-28" AND "2013-11-02"
GROUP BY supervisor

或者,count 可以替换为:

SUM(DAYOFWEEK(workdate) = 2) `Monday`

这是基于 true 在 MySQL 中等于 1 但不一定在其他 DBMS 中起作用的事实。

关于mysql - MYSQL中的分组列,复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340476/

相关文章:

php - 在 PHP 和 SQL 中查看产品时遇到问题

mysql - 如果 var 等于,则进行一个查询或其他查询

node.js - 多对多关联抛出 "A is not associated to B"错误

mysql - Sea Quail 生成的 MySQL SQL 数据导致 #1064 SQL 错误

mysql - SQL,将一列分组并计算其属性

mysql - 玛丽亚数据库/MySQL : is the "UTC" timezone the same as "+00:00"?

mysql - 使用不同的 where 条件对列进行多次计数

mysql - 类似于 MySQL 中的 except 语法

MYSQL DATE_FORMAT 返回额外的日期加上自定义时间

sql - 使用 sql 重新排序除值 0 以外的整数