【问题标题】:Need Help in Writing a Query在编写查询时需要帮助
【发布时间】:2014-06-12 08:41:04
【问题描述】:

我有一张桌子可以保存电话记录。我需要在特定日期范围(例如 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 还是一段简单的 PHP 代码来操作您当前的结果数组?
  • @Mark:我需要这个作为 SQL 结果而不是使用 php 循环。
  • @raheelshan:我想要的输出是上面提到的第二个示例数组,数据存储在包含太多字段的表上,但重要的字段是时间和事件,如果 event = CONNECT表示已接听电话,如果 event = RINGNOANSWER 表示未接听电话。
  • @Ordidaad - 我不确定你是否同时标记了 mysqlarrays,这表明 PHP 中的数组操作与 SQL 查询一样有效

标签: php mysql sql arrays database


【解决方案1】:

直接的 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`;

【讨论】:

  • 我的错:将 COUNT() 替换为 SUM(),如我更新的答案中所示
  • 感谢 Mark,它可以工作,所以我可以将 event = 'connect' 的其他字段的 SUM 或 AVG 添加到此查询中吗?此字段显示已接听电话的通话时长,此字段名称为我表中的 data1
  • 您可以:SUM(data1) / SUM(event = 'CONNECT') AS average_call_time 将有效,只要 data1 对于未应答呼叫的值为 0 即可
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
相关资源
最近更新 更多