这是称为产品的第一张表的结构。
PRODID PDESC PRICE CATEGORY DISCOUNT
101 BALL 10 SPORTS 5
102 SHIRT 20 APPAREL 10
这是第二张表的结构,称为SaleDetail。
SALEID PRODID QUANTITY
1001 101 5
1001 101 2
1002 102 10
1002 102 5
我正试图通过加入2个表来获取每种产品的总销售额。这是我尝试过的SQL,但未给出正确的结果。
select a.prodid,
(sum((price - discount))),
sum(quantity),
(sum((price - discount))) * sum(quantity)
from product a
join saledetail b on a.prodid = b.prodid
group by a.prodid
查询的第二列给出的最终价格不正确。请帮助我更正此SQL。
答案 0 :(得分:1)
请在fiddle中找到您的问题的指示性答案。
一个问题源于价格差异的汇总。如果同一产品具有两个不同的价格,则这些价格将合计为一个。
此外,您需要乘以价格和数量的总和,而您需要对每个样本执行计算。看看@DanteTheSmith的答案。
您可能会考虑使用查询左侧的SaleDetail表。
pk
答案 1 :(得分:0)
如果您使用SQL小提琴构建示例或为表提供创建,这将有所帮助,但是如果我不得不猜测您的问题是:
(sum((price - discount))) * sum(quantity)
需要是:
sum((price - discount) * quantity)
(price - discount) * quantity
是您要应用联接表的PER ROW的功能,然后在按prodid分组时希望将所有这些与SUM()累加。
此外,您会注意到,(价格-折扣)只需每行一次,因此可以使用更快的版本:
(price-discount) * sum(quantity)
这将为您带来该产品在所有销售中的总收入,我想这就是您想要的吗?
我只是注意到您对第二栏dunno一直有疑问,如果一直存在疑问:
(sum((price - discount)))
为什么要总结?您是否想要每种产品每单位产品赚取的钱?好吧,猜猜是什么,您的价格始终与折扣相同,因此您可以轻松选择:
(price-discount) as PPP
注意:这是假设折扣是数字折扣(而不是百分比折扣)并且适用于您的所有销售,并且价格永远都是相同的,而这并非现实生活中的东西。