php - php/mysql 查询的计数和求和

标签 php mysql

尝试生成一个表,汇总查询中的总计等,但无法使其正常工作。

我有这个代码:

    <?php

    $assigned = $_POST['Sales_Exec'];
    $date = $_POST['DateSelect'];
    $Renewed = "SUM(CASE WHEN Outcome = 'Renewed' THEN 1 ELSE 0 END)  AS 'Renewed <br/> Cases'";
    $Lapsed = "SUM(CASE WHEN Outcome = 'Lapsed' THEN 1 ELSE 0 END)  AS 'Lapsed <br/> Cases'";
    $Open = "SUM(CASE WHEN Outcome = 'Open' THEN 1 ELSE 0 END)  AS 'Outstanding <br/> Cases'";
    $Total =  "SELECT COUNT(Assigned) as 'Total <br/> Assigned";


    echo GenerateTable("SELECT COUNT(Assigned) as 'Total <br/> Assigned, $Open, $Renewed, $Lapsed FROM Data WHERE Assigned = '$assigned'  ");

?>

并且收到此错误:

MySQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'Open' 附近使用的正确语法 THEN 1 ELSE 0 END) AS 'Outstanding Cases', SUM(CASE WHEN Outcome = ' 第 1 行

并且无法发现我哪里出错了。

除此之外,我还需要根据续订案例与分配案例总数进行续订“转换”百分比。我试过了

$Conversion = $Renewed/$Total;

但是并没有走到这一步,可能是因为上面的原始错误。我还需要将其四舍五入到最接近的百分比整数,即(95.67868786% 等于 96%)。

真的不知道如何让它工作,因此我们将不胜感激,提前谢谢您!

最佳答案

您错过了一个单引号(在 Total <br /> Assigned 之后):

GenerateTable("SELECT COUNT(Assigned) as 'Total <br/> Assigned', $Open, $Renewed, $Lapsed FROM Data WHERE Assigned = '$assigned' ");

至于百分比,您可能想在 PHP 中执行此操作,这将是本例中最简单的解决方案。因此,如果您的结果集中有一行,您可以执行以下操作:

$Conversion = $row['Renewed <br/> Cases] / $row['Total <br/> Assigned'];

关于php - php/mysql 查询的计数和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783273/

相关文章:

php - 使用递归函数使用php数组为树结构数据创建json数据

mysql - 为什么我的查询在 mySql 中给出错误的 fileid?

php - 多个 mysql_query 不起作用

mysql - 如何充分利用mysql中的索引?

php - 从表中删除重复项并添加值

php - 在 PHP 中实现类似 facebook 的墙应用程序的最佳方法是什么?

php - onClick 事件的 javascript 变量中的值没有改变

javascript - 在同一页面打开 HTML 表单

php - 验证确认密码的问题

大型表的 MySQL 主键列类型