php - 如何统计全年记录?

标签 php mysql

我需要按年份计算记录,我做了一些查询,但没有得到正确的结果。以下是我的查询。但这对我不起作用。有人可以看看这个并给我正确的查询吗?任何帮助将不胜感激。

SELECT 
(SELECT count(DISTINCT id) FROM call_response WHERE  disposition=0 AND user_id=pu.id  ) AS `trueAlarm`, 
(SELECT count(DISTINCT id) FROM call_response WHERE  disposition=1 AND user_id=pu.id  ) AS `falseAlarm`, 
(SELECT count(DISTINCT id) FROM call_response WHERE  disposition=2 AND user_id=pu.id  ) AS `disregarded`, 
YEAR(cr.created_date) AS `callYear` 
FROM `call_response` AS `cr` 
INNER JOIN `permit_users` AS `pu` 
ON cr.user_id=pu.id 
WHERE ( pu.is_deleted=0 AND pu.is_trashed=0 AND cr.is_deleted=0)
GROUP BY `callYear`

最佳答案

您想要的查询使用条件聚合或子查询,但不能同时使用两者。换句话说,要么使用子查询,但没有到 call_response 的外部联接。或者,有外连接但没有子查询。

我会这样编写查询:

SELECT count(distinct case when disposition = 0 AND user_id = pu.id then id end) as trueAlarm, 
       count(distinct case when disposition = 1 AND user_id = pu.id then id end) as falseAlarm, 
       count(distinct case when disposition = 2 AND user_id = pu.id then id end) as disregarded, 
       YEAR(cr.created_date) AS `callYear` 
FROM `call_response` `cr` INNER JOIN
     `permit_users` `pu` 
      ON cr.user_id = pu.id 
WHERE pu.is_deleted = 0 AND pu.is_trashed = 0 AND cr.is_deleted = 0
GROUP BY `callYear`;

关于php - 如何统计全年记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057419/

相关文章:

mysql - 如何导入现有数据库而不干扰现有数据

php - 使 mt_rand() 尽可能安全

javascript/php 从 facebook 应用程序重定向到应用程序商店

PHP - 从元值获取数据

javascript - 每次有人插入数据库时​​ PHP MYSQL Javascript 都会播放音频

php - 从选择元素中检索 PHP 对象

mysql - 使用 left join 和 sum 加速 mysql 查询

PHP 丢失 session 的页面之间

mysql - 如何根据表中先前插入的值创建插入前触发器