是否可以在Count()中指定一个条件?我希望只计算在Position列中有“Manager”的行。

我想在count语句中做,而不是用WHERE;我正在询问它,因为我需要在相同的SELECT(类似count (Position = Manager), count (Position = Other))中计算经理和其他,所以在这个例子中,WHERE对我来说没有用处。


当前回答

我认为您可以使用一个简单的WHERE子句来只选择count some记录。

其他回答

在MySQL中,布尔表达式的计算结果为0或1,因此下面的聚合工作:

select sum(Position = 'Manager') as ManagerCount
from ...

这取决于你的意思,但另一种解释的意思是,你想要计算具有特定值的行,但不想将SELECT限制为只是那些行…

你可以使用SUM()和一个子句,像这样而不是使用COUNT(): 如。

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

假设你不想限制返回的行,因为你也在聚合其他值,你可以这样做:

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

假设在同一列中,你有经理,主管和团队领导的值,你可以得到每一个的计数如下所示:

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 ...

你的意思是:

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

如果是这样,那么是的,这是可行的!

@Guffa的回答很好,只要指出可能用IF语句更干净就行了

select count(IIF(Position = 'Manager', 1, NULL)) as ManagerCount
from ...