php - MYSQL:求和问题

标签 php mysql select sum

我遇到一个小问题,我的生活在顶部计数错误,但在 while fetch 数组的底部它们都是正确的。

它们存储在数据库中如下

生命=1 平均功率=1 葬礼=1

查询应该检查该行是否与 1 匹配并对其进行计数。

 mysql_query("SELECT DISTINCT consultant, COUNT(*) as total, 
        sum(CASE WHEN life = '1' then 1 else 0 end) life,
        sum(CASE WHEN funeral = '1' then 1 else 0 end) funeral,
        sum(CASE WHEN IPP = '1' then 1 else 0 end) IPP
         FROM new WHERE call_date = '".$date."' and `qc_status` != 'Fail' GROUP BY consultant ORDER BY total DESC, life DESC, funeral DESC");

我有一名员工,他的生命总数是 9,但是当我运行上面的脚本时,它 = 8

当我进一步查看列表时,我有一名工作人员在 4 上,而在数据库中它是 4。

Full script.
{
        $totallife=0;
        $totalfuneral;
        $totalIPP;
        $total =0;
        $agents = mysql_query("SELECT DISTINCT consultant, COUNT(*) as total, 
        sum(CASE WHEN life = '' then 0 else 1 end) as life,
        sum(CASE WHEN funeral = '1' then 1 else 0 end) as funeral,
        sum(CASE WHEN IPP = '1' then 1 else 0 end) IPP
         FROM new WHERE call_date = '".$date."' and `qc_status` != 'Fail' GROUP BY consultant ORDER BY total DESC, life DESC, funeral DESC");
        while($agent = mysql_fetch_array($agents)){
            $totallife = $totallife+$agent[life];
            $totalfuneral = $totalfuneral+$agent[funeral];
            $totalIPP = $totalIPP+$agent[IPP];
            $total= $total+$agent[total];
            echo "<tr><td>".$agent[consultant]."</td><td>".$agent[life]."</td><td>".$agent[funeral]."</td><td>".$agent[IPP]."</td><td>".$agent[total]."</td></tr>";
        }

        echo "<tr><td><b>TOTALS</b></td><td><b>".$totallife."</b></td><td><b>".$totalfuneral."</b></td><td><b>".$totalIPP."</b></td><td><b>".$total."</b></td></tr>";
    }

最佳答案

SELECT 中删除 DISTINCT,因为您已经按该字段进行分组顾问:

SELECT 
    consultant, 
    COUNT(*) as total, 
    sum(CASE WHEN life = '1' then 1 else 0 end) life,
    sum(CASE WHEN funeral = '1' then 1 else 0 end) funeral,
    sum(CASE WHEN IPP = '1' then 1 else 0 end) IPP
FROM 
    new 
WHERE 
    call_date = '".$date."' 
    and `qc_status` != 'Fail' 
GROUP BY 
    consultant 
ORDER BY 
    total DESC, 
    life DESC, 
    funeral DESC

关于php - MYSQL:求和问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142138/

相关文章:

php - 在 Symfony2 中使用 Doctrine 映射异常错误

PHP 在 URL 中传递两个 id

mysql - 查询多个表的公共(public)字段,然后按 1 个公共(public)字段排序

mysql - 如何优化具有多个外连接到大表、group by 和 order by 子句的查询的执行计划?

sql - 在 Access 2007 中使用 COUNT 从多个表中进行 SELECT

java - WSDL Web 服务从数据库返回旧数据,即使我已经更新了数据库

php - 与数据库连接的 parameters.yml 和 config_(dev|stage|prod).yml 混淆

mysql - 使用 SQL 分配资源(行)

phpmyadmin 显示完整的 sql 输出

php - MySQL,连接多个表而不是连接?