【问题标题】:Make multiple counts then sum it in one query进行多次计数,然后在一个查询中求和
【发布时间】:2021-04-20 17:25:15
【问题描述】:

我正在寻找有关如何获取 3 个教师代码的计数然后将所有计数加到一个变量中的解决方案。我没有找到合适的查询来组合计数然后求和。

这是我的代码:

SELECT COUNT(CASE WHEN `fac_code` LIKE '%JABPN%' THEN 1 END) AS count1,
       COUNT(CASE WHEN `fac_code` LIKE '%JABFNT%' THEN 1 END) AS count2,
       COUNT(CASE WHEN `fac_code` LIKE '%FPKF%' THEN 1 END) AS count3
FROM `list_faculty` WHERE active = 'Y';

我得到的输出:

count1 count2 count3
69 184 36

我需要的输出是所有计数的总和,即 289

【问题讨论】:

    标签: php sql count phpmyadmin sum


    【解决方案1】:

    添加这个怎么样?

    COUNT(CASE WHEN fac_code LIKE '%FPKF%' OR fac_code LIKE %JABFNT%' OR fac_code LIKE  '%JABPN%' THEN 1 END)
    

    SQL 不允许您在同一个 SELECT 中使用别名,因此可以选择 CTE 或子查询。

    【讨论】:

      【解决方案2】:

      您可以将这三个计数组合在case .. when 的一个条件中,也可以在它们之间使用+,如下所示:

      SELECT COUNT(CASE WHEN `fac_code` LIKE '%JABPN%'
                          OR `fac_code` LIKE '%JABFNT%'
                          OR `fac_code` LIKE '%FPKF%' 
                        THEN 1 END) AS count1_3
      FROM `list_faculty` WHERE active = 'Y';
      

      或者您可以在它们之间使用+,如下所示:

      SELECT COUNT(CASE WHEN `fac_code` LIKE '%JABPN%' THEN 1 END) +
             COUNT(CASE WHEN `fac_code` LIKE '%JABFNT%' THEN 1 END) +
             COUNT(CASE WHEN `fac_code` LIKE '%FPKF%' THEN 1 END) AS count1_3
      FROM `list_faculty` WHERE active = 'Y';
      

      在您的情况下,最好的方法是在WHERE 子句中使用条件,如下所示:

      SELECT COUNT(*) 
        FROM `list_faculty` 
       WHERE active = 'Y'
         AND (`fac_code` LIKE '%JABPN%'
              OR `fac_code` LIKE '%JABFNT%'
              OR `fac_code` LIKE '%FPKF%')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 2021-07-17
        相关资源
        最近更新 更多