php - 在编写查询时需要帮助

标签 php mysql sql arrays database

我有一个用来保存电话记录的表。我需要在特定日期范围内(例如 3 月 1 日至 3 月 5 日)每小时(例如 8:00 至 9:00)接听和未接听电话计数,我不需要分隔日期,只需要分隔时间。

我已经使用了这个查询:

SELECT `event`, DATE(`time`) AS `date`, HOUR(`time`) AS `hour`, COUNT(*) AS `count` FROM `queue_log` WHERE `queuename` = 'Hozoori_Q' AND `event` IN ('CONNECT', 'RINGNOANSWER') AND `time` >= '2014-03-01' AND `time` <= '2014-03-05' GROUP BY `event`, `date`, `hour`;

“事件”字段是调用状态。

这个查询输出是这样的:

1 => 
array (size=4)
'event' => string 'CONNECT' (length=7)
'date' => string '2014-03-01' (length=10)
'hour' => string '9' (length=1)
'count' => string '99' (length=2)
2 => 
array (size=4)
'event' => string 'RINGNOANSWER' (length=7)
'date' => string '2014-03-01' (length=10)
'hour' => string '9' (length=1)
 'count' => string '5' (length=2)

但我想变成这样:

  1 => 
    array (size=4)
      'date' => string '2014-03-01' (length=10)
      'hour' => string '9' (length=1)
      'answered_count' => string '99' (length=2)
      'not_answered_count' => string '5' (length=2)

有什么解决办法吗?

最佳答案

直接的 SQL 答案:

SELECT DATE(`time`) AS `date`, 
       HOUR(`time`) AS `hour`, 
       SUM(`event` = 'CONNECT') AS `answered_count`, 
       SUM(`event` = 'RINGNOANSWER') AS `not_answered_count` 
  FROM `queue_log` 
 WHERE `queuename` = 'Hozoori_Q' 
   AND `event` IN ('CONNECT', 'RINGNOANSWER') 
   AND `time` >= '2014-03-01' 
   AND `time` <= '2014-03-05'
 GROUP BY `date`, `hour`;

关于php - 在编写查询时需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24179949/

相关文章:

php - 在 Android 上向 PHP/MySQL 后端发送和检索(可能是大量)数据的最佳方式是什么?

php - 学说可以有多个到数据库的连接吗?

mysql - 触发器和 IF 为 NULL

mysql - 首先加载什么?主键还是外键?

php - 我的数据库没有插入一些值

php - 从 2 个不同的表以用户或管理员身份登录

php - 根据另一个表中的存在从表中进行选择

mysql - 如何有效地将 mysql 表拆分为多个表(按列而不是按行拆分)?

mysql - 我应该在 MySQL 中使用 join 来处理简单关系吗

sql - 当月和当年的特定日期