所以。。。我想从我的数据集中找出在1992年法拉利360蜘蛛红上花费最多的前5位客户
这是回答上述问题的查询:
select C.customerNumber, C.customerName, P.productName, sum(ODF.priceEach) from orderDetailFacts ODF
left join Customers C on ODF.customerNumber = C.customerNumber
left join Products P on ODF.productCode = P.productCode
where P.productName like '%1992 Ferrari%'
group by C.customerNumber, C.customerName, P.productName, ODF.priceEach
order by sum(ODF.priceEach) desc
limit 5
我得到的结果是:[https://i.stack.imgur.com/rowry.png](结果比截图还多)
然而,我的问题是,我无法从customername列中为mini gifts distributors ltd(第5行和第6行)分组,以便每列的价格为总和。
这意味着第5行和第6行将连接在一起,每列的价格将是386.09,而不是分别为196.43和189.66。
有解决办法吗?
2条答案
按热度按时间e5njpo681#
我想您希望每个客户/产品有一排。但你也包括价格。所以,修复
GROUP BY
:注意这些变化:
ODF.priceEach
已从GROUP BY
.你需要两张table之间的匹配,所以
LEFT JOIN
不合适。xfb7svmp2#
删除
ODF.priceEach
因为您正在聚合此列