[英]SQL - counting based on multiple criteria
我之前已经编写了SQL count语句,但是我需要编写一个查询,该查询将为条件返回2组计数值。 原始查询计算的是拥有无效信息的公司的人数,很好,效果很好。 我现在需要扩展此查询,以便它执行上述操作,但还包括人员总数。
因此,举例来说,我得到的公司A的结果是10名无效人员中的5名。
我在对公司ID的第一个查询中使用分组依据。
是否可以包含2个计数值?
可能应该说,我正在使用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.