查找特定日期范围内每天的门票总数

Posted

技术标签:

【中文标题】查找特定日期范围内每天的门票总数【英文标题】:Find total number of tickets per day within a specific date range 【发布时间】:2014-07-30 08:47:50 【问题描述】:

我正在尝试编写一个允许我执行以下操作的查询:

“查找特定日期范围内每天打开和关闭的工单总数”。

这是我目前得到的结果

SELECT
COUNT(tikcet_id) as totalTickets, 
COUNT(CASE WHEN ticket_status = 'Complete' 
      THEN 1 
      ELSE NULL END) as closedTickets,
DATE(ticket_date)
FROM tickets 
WHERE (DATE(ticket_date) BETWEEN DATE('2014-07-18') AND DATE('2014-07-30'))
GROUP BY ticket_date

这是我得到的结果,它可以很好地计算门票,只是没有按照我想要的方式对它们进行分组。

TotalTickets| ClosedTickets| ticket_date
           1|             0| 2014-07-21 10:00:00
           1|             0| 2014-07-21 10:21:21
           0|             1| 2014-07-21 11:45:12
           0|             1| 2014-07-22 09:21:24
           0|             1| 2014-07-22 09:43:23

我希望将它们按天分组,例如,我应该能够看到类似的内容:

TotalTickets| ClosedTickets| ticket_date
           2|             1| 2014-07-21
           2|             0| 2014-07-22

【问题讨论】:

这是您要查找的内容:***.com/questions/508791/… 当你使用这个分组命令时会发生什么GROUP BY DATE(ticket_date) 【参考方案1】:

做这个

GROUP BY DATE(ticket_date)

而不是

GROUP BY ticket_date

你已经在SELECT 子句中做对了。

顺便说一句,写这个的更短的方式

COUNT(CASE WHEN ticket_status = 'Complete' 
      THEN 1 
      ELSE NULL END) as closedTickets,

SUM(ticket_status = 'Complete') as closedTickets,

布尔表达式的计算结果为truefalse10

【讨论】:

非常感谢。我还有一个问题,有没有办法显示根本没有票的日子?我目前只在有记录的日子里得到结果。 您无法选择不存在的内容。要么在应用程序级别解决它,要么创建一个只包含日期的表并离开它。

以上是关于查找特定日期范围内每天的门票总数的主要内容,如果未能解决你的问题,请参考以下文章

php 活动门票:在门票电子邮件中显示活动日期和时间。

php 活动日历和活动门票加(ET +):如果门票适用于特定类别的活动,则禁用QR码。

SQL加入多个子查询 - 按日期计算打开/关闭

MySQL for Rails 在特定日期范围内每天获得 AVERAGE 的最佳方法

rfid手持终端电子门票管理系统

一周结束时有多少张门票?