使用SQL为每个产品完成的销售总额

时间:2020-10-29 12:34:29

标签: mysql sql rdbms

这是称为产品的第一张表的结构。

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。

2 个答案:

答案 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

注意:这是假设折扣是数字折扣(而不是百分比折扣)并且适用于您的所有销售,并且价格永远都是相同的,而这并非现实生活中的东西。

相关问题