繁体   English   中英

SQL-基于多个条件的计数

[英]SQL - counting based on multiple criteria

我之前已经编写了SQL count语句,但是我需要编写一个查询,该查询将为条件返回2组计数值。 原始查询计算的是拥有无效信息的公司的人数,很好,效果很好。 我现在需要扩展此查询,以便它执行上述操作,但还包括人员总数。

因此,举例来说,我得到的公司A的结果是10名无效人员中的5名。

我在对公司ID的第一个查询中使用分组依据。

是否可以包含2个计数值?

编辑1

可能应该说,我正在使用MySQL。

如果没有表结构,请进行以下假设:

  SELECT t.company_id,
         SUM(CASE WHEN t.isinvalid = 1 THEN 1 ELSE 0 END) AS numInvalid,
         COUNT(*) AS total
    FROM YOUR_TABLE t
GROUP BY t.company_id

您需要在select子句而不是where子句的case语句中包含无效计数

根据您的RDBMS-有不同的解决方案。 在SQL Server / Oracle中-您可以使用OVER()子句。

http://msdn.microsoft.com/en-us/library/ms189461.aspx

例:

从表中选择count(PersonID)over()作为TotalCount,count(personID)over(PARTITION BY CompanyID)

解决了这个问题,进行了左联接并根据这些结果进行计数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM