mysql - 按计数选择

标签 mysql

所以..事情是这样的..我试图根据Mysql上的这个表获取一份报告。

表有这些列

statusvalue submitdate          employeeNumber
2           2016-11-17 17:49:05     2
1           2016-11-17 17:49:11     4
3           2016-11-17 17:49:16     4
4           2016-11-17 17:50:58     2
5           2016-11-17 17:51:07     5



Status 0 = Pending
1= Started
2=inprogress
3= cancelled
4= terminated
5=unknown

现在我需要选择如下数据

date           day    pending  started  inprogress cancelled  terminated total 
2017-04-17     Monday   0        1          4        0         1           6    
2017-04-16     Sunday   0        1          4        0         1           6   

到目前为止我可以获得日期和星期

 select  date(submitdate) as subdate, case weekday(date(submitdate))
 WHEN 0 then 'PENDING'
        WHEN 1 then 'STARTED'
        WHEN 2 then 'INPROGRESS'
        WHEN 3 then 'CANCELLED'
        WHEN 4 then 'TERMINATED'
        WHEN 5 then 'UNKNOWN' END as submitdate
from tb_status t1 where employeenumber=15 group by subdate order by subdate ;

但是不太确定如何根据状态进行计数。任何帮助将不胜感激。

最佳答案

这里您只需要一个基本的数据透视查询。汇总提交日期,然后统计各种类型的状态。

SELECT
    DATE(submitdate) AS subdate,
    WEEKDAY(submitdate) AS day,
    SUM(CASE WHEN WEEKDAY(DATE(submitdate)) = 0 THEN 1 END) AS PENDING,
    SUM(CASE WHEN WEEKDAY(DATE(submitdate)) = 1 THEN 1 END) AS STARTED,
    SUM(CASE WHEN WEEKDAY(DATE(submitdate)) = 2 THEN 1 END) AS INPROGRESS,
    SUM(CASE WHEN WEEKDAY(DATE(submitdate)) = 3 THEN 1 END) AS CANCELLED,
    SUM(CASE WHEN WEEKDAY(DATE(submitdate)) = 4 THEN 1 END) AS TERMINATED,
    SUM(CASE WHEN WEEKDAY(DATE(submitdate)) = 5 THEN 1 END) AS UNKNOWN
FROM tb_sattus t1
WHERE employeenumber = 15
GROUP BY DATE(submitdate)
ORDER BY subdate

请注意,您当前的查询不正确,因为您正在根据状态选择字符串文字。相反,在我的查询中,各种状态类型显示为列名称,并选择您想要的计数。

关于mysql - 按计数选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43448145/

相关文章:

php - 使用表单在 MySQL DB 中存储和检索关联数组

c# winform使用未分配的局部变量

php - 使用AJAX打开php文件

php - 使用 mysql 和 php 创建 url 树

php - 如何在MySQL表字段中保存化学方程式

MySQL "load data local infile"只加载 1 行

php - Codeigniter 从数据库中获取所有重复记录并显示在 View 中

php - 如何在没有 SSH 的情况下按需将实时 MySQL 数据库下载到本地测试数据库?

mysql - 通过命令行将sql文件导入mysql

php - SQL UNION 只返回第一个 SELECT 的结果