我使用以下查询来整理表格中的数据并且计算不正确:
SELECT rowid, customer, category, SUM(DISTINCT return) as returntotal, SUM(DISTINCT release) as releasetotal FROM orders GROUP BY customer
这是我目前的表格:
这就是我需要的查询结果:
我需要DISTINCT'返回'中的DISTINCT值的总和,以及'类别&#39 ;; “释放”中DISTINCT值的总和'通过DISTINCT'类别'以及所有GROUPED BY客户。我当前的查询正在跳过具有相同值的DISTINCT类别。例如:在顶部图片的rowid 17-19中,我的查询结果为' 465'对于斯科特来说,我需要的价值是每个DISTINCT类别的DISTINCT值或465个家庭用品和465个草坪。
每行的输出应如下所示:
customer (no duplicates) totalreturn totalrelease
以下是每行所需输出的示例:
Scott $0 $930
Michelle $123 $250
Brad $2070 $0
问题:
谢谢!
答案 0 :(得分:0)
要获得最终结果,请使用子查询:
select customer, sum(return) as return, sum(category) as category
from (select distinct customer, return, release, category
from orders
) o
group by customer;
现在我已经说过,我认为您的基础数据存在问题。每当您考虑sum(distinct)
或count(distinct)
时,您都会遇到数据问题。在这种情况下,我假设数据是按orders
表中的类别故意非规范化的。您真的应该从不同的表中获取每个类别的公共值。或者,orders
中的副本不应该存在。