【发布时间】:2014-05-23 14:07:50
【问题描述】:
目前我们正在建立一个数据库来跟踪不同工厂的污染物排放。现在需要一个查询来为我们提供有关相对数量的信息。不知何故,我觉得这应该是直截了当的,但我在 SQL 中没有成功实现它。
我从返回以下字段的工作查询开始:
PRODUCTION_YEAR, COMPANY, PRODUCT_CATEGORY, POLLUTANT, TOTAL_EMISSIONS, SHARE
TOTAL_EMISSIONS 包含每个公司在特定年份和产品类别中的总排放量。 SHARE 是一个计算字段,包含每家公司对该特定产品类别中该特定污染物的当年总排放量的贡献(作为分数)。
现在的任务是计算造成每种污染物的工厂。我到了这个:
SELECT PRODUCTION_YEAR, POLLUTANT, PRODUCT_CATEGORY, Count(COMPANY)
FROM theQuery
GROUP BY PRODUCTION_YEAR, POLLUTANT, PRODUCT_CATEGORY;
但是,现在我们的客户想要更复杂的东西:只计算贡献 95% 排放量的最大污染者。在脚本中,我可能只是将每个类别中的污染百分比升序排序,然后遍历数据集,总结份额,直到达到 5% 后才开始计数。用 SQL 做,不知道。
我的第一步(向新查询添加 SUM(SHARE) 字段)已经导致错误(“表达式未包含在聚合函数中”,粗略翻译,不知道该怎么做,因为确实包含了所有表达式)。有没有办法在 SQL 查询中做到这一点,还是我在浪费时间,最好只写一些 VBA?
感谢您的任何意见!
最好, 本
【问题讨论】:
-
不久前我回答了一个类似的问题here。这有帮助吗?
-
谢谢戈德,这看起来很棒。它相当复杂,我需要一些时间来研究它,但我认为这正是我所需要的!
-
再次感谢,您的方法非常有效!不过,它确实让 Access 崩溃了——运行包含一些聚合的完整查询通常会导致即时崩溃。逐步运行保存的查询更安全。很奇怪。