之前我编写了SQL计数语句但是我需要编写一个查询,它返回条件的2组计数值。原始查询计算具有无效信息的公司的人数,很好,效果很好。我现在需要扩展此查询,以便它执行上述操作,但也包括总人数。
例如,我将从总共10个中获得5个无效人员A公司的结果。
我在第一次查询公司ID时使用了一个小组。
是否可以包含2个计数值?
可能应该说,我正在使用MySQL。
答案 0 :(得分:2)
没有表结构,做出假设:
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
答案 1 :(得分:0)
你需要在select子句的case语句中而不是在where子句中使用无效计数
答案 2 :(得分:0)
取决于您的RDBMS - 有不同的解决方案。在SQL Server / Oracle中 - 您可以使用OVER()子句。
http://msdn.microsoft.com/en-us/library/ms189461.aspx
示例:
选择count(PersonID)over()为TotalCount,count(personID)over(PARTITION BY CompanyID) 从表
答案 3 :(得分:0)
根据这些结果计算出左连接和计数的问题。