【问题标题】:SQL. This one involves multiplying two columns from different tablesSQL。这涉及将不同表中的两列相乘
【发布时间】:2016-03-25 21:34:11
【问题描述】:

首先,我必须找到每个销售员 ID、销售员姓名(名字和姓氏)、他们的 SIN 号、销售数量、单价和总销售额(我必须将此字段标记为 TotalSales)产品。

这是数据:

这是我到目前为止所做的,如果有错误请告诉我:

SELECT 
    s.SalesmanID, s.FirstName, s.LastName, s.SIN, 
    ps.QuantitySold, ps.UnitSalesPrice, 
    (this is where I’m stuck, I must have to create a new column called TotalSales here)

如果你能帮上忙,请告诉我!

【问题讨论】:

  • 您熟悉什么是 INNER 和 OUTER 联接吗? (严肃的问题)。
  • sellid 和 saleamanid 是同一个东西吗?他们是两者之间的关系吗?
  • @patelb 他们被认为是平等的。

标签: sql ms-access


【解决方案1】:
SELECT s.SalesmanID, max(s.FirstName) first_name, max(s.LastName) last_name, max(s.SIN) sin, sum(ps.QuantitySold) sold_qty, sum(ps.quantitysold * ps.UnitSalesPrice) total_sales_AMT from salesmen s join productsales PS on s.salesmanid = PS.sellerid group by s.salesmanid

您需要与 group by 进行联接,以便在推销员级别汇总销售数量和销售价格。见上面的代码。

加入和分组的原因是因为我假设销售人员和产品销售之间存在一对多的关系。

如果您需要在推销员和产品级别执行此操作,那么您需要扩展分组。见下文。

SELECT s.SalesmanID, ps.productid, max(s.FirstName) first_name, max(s.LastName) last_name, max(s.SIN) sin, sum(ps.QuantitySold) sold_qty, sum(ps.quantitysold * ps.UnitSalesPrice) total_sales_AMT from salesmen s join productsales PS on s.salesmanid = PS.sellerid group by s.salesmanid, ps.productid

另一个注意事项是,如果您想获得所有销售人员,而不仅仅是那些有销售的销售人员,请用左外连接替换连接

【讨论】:

  • 谢谢@patelb 您能否解释一下使用 UniteSalesPrice 乘以 QuantitySold 创建新字段 (TotalSales) 的方式和位置?
  • 我错过了那个乘数。我进行了编辑。现在检查代码块。
猜你喜欢
  • 2015-11-05
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多