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_Details
和Order_Each_Product
通常分别称为order_headers
和order_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有一个关键字?无论如何,它非常有帮助。谢谢楼主!e
是 Employee
表的别名。您还可以使用 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