是否能够在Count()中指定条件?

是否能够在Count()指定条件? 我想只计算在Position列中有“Manager”的行。 spa

我想在count语句中执行它,而不是使用WHERE ; 我问这个问题,由于我须要在同一个计数管理人员和其余SELECT (像Count(Position = Manager), Count(Position = Other))因此WHERE在这个例子中没有用我。 code


#1楼

SELECT COUNT(*) FROM bla WHERE Position = 'Manager'

#2楼

我认为你能够使用一个简单的WHERE子句来只选择一些记录。 it


#3楼

你的意思是这样的: io

SELECT Count(*) FROM YourTable WHERE Position = 'Manager'

若是是这样,那么是的,有效! select


#4楼

假设您不想限制返回的行,由于您也在聚合其余值,您能够这样作: vi

select count(case when Position = 'Manager' then 1 else null end) as ManagerCount
from ...

假设您在同一列中拥有经理,主管和团队负责人的价值,您能够获得每一个人的计数: co

select count(case when Position = 'Manager' then 1 else null end) as ManagerCount,
    count(case when Position = 'Supervisor' then 1 else null end) as SupervisorCount,
    count(case when Position = 'Team Lead' then 1 else null end) as TeamLeadCount,
from ...

#5楼

取决于你的意思,但意义的另外一种解释是你想要计算具备特定值的行,但不但愿将SELECT限制为JUST那些行...... cas

你能够使用带有子句的SUM() ,而不是使用COUNT() :例如 ab

SELECT SUM(CASE WHEN Position = 'Manager' THEN 1 ELSE 0 END) AS ManagerCount,
    SUM(CASE WHEN Position = 'CEO' THEN 1 ELSE 0 END) AS CEOCount
FROM SomeTable
相关文章
相关标签/搜索