为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MYYA 2020-02-04 15:13:35
是否可以在中指定条件Count()?我只想计算“位置”列中具有“管理器”的行。我想在count语句中执行此操作,而不要使用WHERE; 我问这个问题,因为我需要计算两个经理和其他在同一个SELECT(像Count(Position = Manager), Count(Position = Other))这样WHERE在这个例子中没有用我。
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

如果您不能仅使用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 ...


查看完整回答
反对 回复 2020-02-04
?
弑天下

TA贡献1818条经验 获得超7个赞

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


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


查看完整回答
反对 回复 2020-02-04
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

取决于您的意思,但含义的另一种解释是您要对具有特定值的行进行计数,但又不想将仅限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


查看完整回答
反对 回复 2020-02-04
  • 3 回答
  • 0 关注
  • 1579 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信