我想使用Like Inside a Count所以我可以使用VolunteerFundersID旁边的(在此示例中)活跃志愿者数量
这就是我所拥有的,虽然有些东西告诉我,我的方式完全是错误的。
select
VolunteersFunderID,
Count( VolunteerCategory LIKE '%Active%' ) as NumberActive
from
VolunteerTbl
group BY
VolunteersFunderID
我是新手使用这个网站,任何不是侮辱的反馈(我上次发布的时候)都会非常感激。
答案 0 :(得分:1)
有几种不同的方法可以做到这一点,您需要选择最适合您的方案的方法。
select VolunteersFunderID,
Count(CASE WHEN VolunteerCategory LIKE '%Active%' THEN 1 END) as NumberActive
from VolunteerTbl
group BY VolunteersFunderID
这将遍历所有行并计算VolunteerCategory处于活动状态的任何记录。这样,如果您需要这样做,可以计算更多类别并添加其他条件,因为您正在查看完整数据集。
另一种方法是使用WHERE
子句过滤数据:
select VolunteersFunderID,Count(1) as NumberActive
from VolunteerTbl
WHERE VolunteerCategory LIKE '%Active%'
group BY VolunteersFunderID
使用WHERE子句,您在计算任何内容之前过滤数据,因此更难以进行其他计算。
答案 1 :(得分:0)
将其移至WHERE
子句:
SELECT VolunteersFunderID, COUNT(VolunteerCategory) AS NumberActive
FROM VolunteerTbl
WHERE VolunteerCategory LIKE '%Active%'
GROUP BY VolunteersFunderID
答案 2 :(得分:0)
计数是聚合函数,所以"计数"只有非NULL值。知道您可以使用CASE
使NULL
和NOT NULL
值仅计算活动值。
以下查询应该有效:
select VolunteersFunderID,
Count(
case when VolunteerCategory LIKE '%Active%'
then 1
else NULL
end
) as NumberActive
from VolunteerTbl
group BY VolunteersFunderID
值得一提的是:
like
的{{1}}会降低查询速度 - 您确定不能只写%
吗?VolunteerCategory = 'Active'
例如VolunteerCategory
。