是否可以在Count()中指定条件?

是否可以在中指定条件Count()?我只想计算“位置”列中具有“管理器”的行。

我想在count语句中执行此操作,而不要使用WHERE; 我问这个问题,因为我需要计算两个经理和其他在同一个SELECT(像Count(Position = Manager), Count(Position = Other))这样WHERE在这个例子中没有用我。


MYYA
浏览 1582回答 3
3回答

撒科打诨

如果您不能仅使用where子句限制查询本身,则可以使用以下事实:count聚合仅计算非空值:select count(case Position when 'Manager' then 1 else null end)from ...您也可以sum类似的方式使用聚合:select sum(case Position when 'Manager' then 1 else 0 end)from ...

弑天下

假设您也不想因为聚合其他值而限制返回的行,则可以这样做:select count(case when Position = 'Manager' then 1 else null end) as ManagerCountfrom ...假设在同一列中您具有经理,主管和团队负责人的值,您可以像这样获得每个值: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于这些行...您可以使用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 CEOCountFROM SomeTable
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server