【发布时间】:2012-08-10 14:40:10
【问题描述】:
我希望有人可以在这里提供帮助和一些建议。我正在尝试获得一个相当复杂的结果,但不确定是否可以将其作为一个带有子查询、联合的查询,或者只是单独的查询在事后合并到 excel 中。
我正在使用来自我的前任的旧数据库,其中包含以下表格: 业务(使用的列:id、sector、state) 表单(使用的列:已提交 (Y/N)、id、business_id) 库存(使用的列:In_stock (Y/N)、id、form_id)
我正在尝试获得如下所示的最终结果:
| SubmittedForms | Unsubmitted Forms | Sector | State |
|-----------------------------------------------------|
| 10 | 5 | Agr | UT |
| 0 | 7 | Chem | MT |
| 2 | 1 | Bio | OK |
| 13 | 0 | Chem | NM |
我遇到的主要问题是,虽然提交的表单不需要任何进一步的参数并且是一个简单的计数,但未提交的表单取决于 Inventory.in_stock='Y'。这是我对提交表单的查询:
SELECT COUNT(Forms.id) AS Submitted, Business.sector, Business.state
FROM Forms
JOIN Business ON Forms.business_id=Business.id
WHERE Forms.submitted='Y'
GROUP BY Business.state, Business.sector
很遗憾,我似乎无法正确计算未提交的表单编号。它只返回该部门的 in_stock 为 Y 的总行数。
如果对 Submitted 和 Unsubmitted 运行单独的查询更容易,这对最终结果来说很好,但我需要一些帮助才能获得正确计数的未提交表单,其中 in_stock 标记为 Y。此外,我尝试使用 COUNT DISTINCT 但是耗时太长,10分钟后仍在运行。我可以在单个查询选项中设想的另一个复杂情况是提交或未提交的表单中可能出现 0/null 值
非常感谢任何帮助!
【问题讨论】:
标签: mysql count subquery distinct