SQL Server Management Studio 一个月的总销售额

Posted

技术标签:

【中文标题】SQL Server Management Studio 一个月的总销售额【英文标题】:Total amount of sales in a month SQL Server Management Studio 【发布时间】:2019-05-18 18:41:18 【问题描述】:

不知道我是否过度规范化但有 4 个表:

员工(ID、姓名) 产品(ID、名称、价格) Order_Details (ID, Employee_ID FK, Month, Year) -- 购买时间和销售的员工 Order_Each_Product (OrderID PK, FK, ProductID PK, FK, Quantity) -- 购买了哪些产品以及购买了每种产品的数量

我想要这样的东西:

( Employee_Name, Month, Total_Sales_Made_In_That_Month_In_Dollar )

我认为您可以通过以下方式从 2 个表中获取每个订单的总数:

SELECT SUM((Order_Each_Product.Quantity) * (Product.Price)) 
FROM Order_Each_Product 
INNER JOIN Product ON Order_Each_Product.ProductID = Product.ProductID
GROUP BY OrderID

但是如何再次按 Employee 分组并获得 SUM 的 SUM?

【问题讨论】:

【参考方案1】:

Forpas 在我编写代码时击败了我!

SELECT
    Employee.Name, Year, Month, SUM(Quantity * Price) AS Total_Sales_In_Month
FROM 
    Order_Details

LEFT JOIN Employee
    ON (Order_Details.Employee_ID = Employee.ID)

LEFT JOIN Order_Each_Product
    ON (Order_Details.ID = Order_Each_Product.OrderID)

LEFT JOIN Product
    ON (Order_Each_Product.ProductID = Product.ID)

GROUP BY
    Employee.ID, Employee.Name, Year, Month

还有一个提示,您当前调用的Order_DetailsOrder_Each_Product 通常分别称为order_headersorder_lines

【讨论】:

您先生是一份礼物。我发现你的超级初学者友好,而我不熟悉员工 e 的 Forpas……但我的问题已经解决了。还要感谢您的最后提示。 @SwedishPotato,谢谢! :) 不要忘记投票并标记已回答。为了解释 Forpas 的代码,他使用了所谓的表别名并省略了可选的AS。完整的你会写FROM Employee AS e,从那时起,它允许你通过名称e来引用Employee表。【参考方案2】:

加入所有表格并按员工的 id、姓名、年份和月份分组:

select
  e.name,
  od.Year,
  od.Month,
  sum(oep.quantity * p.price) Total_Sales_Made_In_That_Month_In_Dollar
from employee e 
inner join order_details od on od.employee_id = e.id
inner join order_each_product oep on oep.orderid = od.id
inner join product p on p.id = oep.productid
group by e.id, e.name, od.Year, od.Month

【讨论】:

非常感谢您的回答。我看到您写的不是 FROM Employee 而是 FROM Employee e。也许最后一个e有一个关键字?无论如何,它非常有帮助。谢谢楼主! eEmployee 表的别名。您还可以使用 AS 关键字找到别名:Employee AS e。 @SwedishPotato 我了解您是 SQL 的初学者,因此您需要一个建议:您必须学会使用别名,在大多数情况下,没有它们您将无法编码。

以上是关于SQL Server Management Studio 一个月的总销售额的主要内容,如果未能解决你的问题,请参考以下文章

怎样使用SQL Server Management Studio

标题: Microsoft SQL Server Management Studio

使用 SQL Server Management Studio 连接到 SQL Server

如何在 SQL Server Management Studio 中注册 SQL Server 服务器?

SQL Server Compact Edition 和 SQL Server 2008 Management Studio

从 SQL Server 2016 到 SQL Server Management Studio 2005 的 ETL