进行多次计数,然后在一次查询中求和
Make multiple counts then sum it in one query
我正在寻找有关如何计算 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
添加这个怎么样?
COUNT(CASE WHEN fac_code LIKE '%FPKF%' OR fac_code LIKE %JABFNT%' OR fac_code LIKE '%JABPN%' THEN 1 END)
SQL 不允许您在同一个 SELECT
中使用别名,因此替代方法是 CTE 或子查询。
您可以在 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%')
我正在寻找有关如何计算 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
添加这个怎么样?
COUNT(CASE WHEN fac_code LIKE '%FPKF%' OR fac_code LIKE %JABFNT%' OR fac_code LIKE '%JABPN%' THEN 1 END)
SQL 不允许您在同一个 SELECT
中使用别名,因此替代方法是 CTE 或子查询。
您可以在 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%')