基于多准则的SQL计数
我以前写过SQL count语句,但我需要编写一个查询,返回一个条件的两组计数值。原始查询统计一家公司拥有无效信息的人数,罚款,效果很好。我现在需要扩展这个查询,以便它执行上述操作,但也包括总人数 举个例子,我会得到a公司10个病人中有5个病人的结果 我在第一次查询公司id时使用了GROUPBY 是否可以包含2个计数值 编辑1基于多准则的SQL计数,sql,mysql,aggregate-functions,Sql,Mysql,Aggregate Functions,我以前写过SQL count语句,但我需要编写一个查询,返回一个条件的两组计数值。原始查询统计一家公司拥有无效信息的人数,罚款,效果很好。我现在需要扩展这个查询,以便它执行上述操作,但也包括总人数 举个例子,我会得到a公司10个病人中有5个病人的结果 我在第一次查询公司id时使用了GROUPBY 是否可以包含2个计数值 编辑1 可能应该说,我使用的是MySQL。您需要在select子句中的case语句中,而不是在where子句中使用无效计数,如果没有表结构,则假设: SELECT t.com
可能应该说,我使用的是MySQL。您需要在select子句中的case语句中,而不是在where子句中使用无效计数,如果没有表结构,则假设:
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
根据您的RDBMS,有不同的解决方案。在SQL Server/Oracle中-可以使用OVER()子句 例如: 选择count(PersonID)over()作为TotalCount,count(PersonID)over(按公司ID划分)
从表中解决了这个问题,根据这些结果进行左连接和计数。您可能应该发布您的查询和/或表结构。啊,听起来很实用,case语句?@user275074:MySQL不支持分析函数。