SQL - 基于多个条件的计数

时间:2010-10-21 19:31:06

标签: sql mysql aggregate-functions

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

例如,我将从总共10个中获得5个无效人员A公司的结果。

我在第一次查询公司ID时使用了一个小组。

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

编辑1

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

4 个答案:

答案 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)

根据这些结果计算出左连接和计数的问题。