sql—如何将列中的结果分组在一起

gywdnpxw  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(379)

所以。。。我想从我的数据集中找出在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。
有解决办法吗?

e5njpo68

e5njpo681#

我想您希望每个客户/产品有一排。但你也包括价格。所以,修复 GROUP BY :

select C.customerNumber, C.customerName, P.productName, sum(ODF.priceEach)
from orderDetailFacts ODF join
     Customers C
     on ODF.customerNumber = C.customerNumber join
     Products P
     on ODF.productCode = P.productCode
where P.productName like '%1992 Ferrari%'
group by C.customerNumber, C.customerName, P.productName;

注意这些变化: ODF.priceEach 已从 GROUP BY .
你需要两张table之间的匹配,所以 LEFT JOIN 不合适。

xfb7svmp

xfb7svmp2#

删除 ODF.priceEach 因为您正在聚合此列

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

相关问题