SQL-如何在三个不同的表中查找特定年份中表现最佳的员工

问题描述 投票:0回答:1

我无法解决这个问题。我对 SQL 还很陌生,这是一个作业。我可以创建一个新表或做任何事情来获得下面问题的答案。

“谁是 2012 年表现最好的员工?请提供与 2012 年销售额最高的员工相关的姓名以及她(或他)的销售额。”

Three Tables I have to use

在 Employee 表中,我们应该使用 EmployeeID 作为对 Customer 表中的 SupportRepID 的引用,它应该与 CustomerID 链接,以便我们可以在发票表中提取总计。

我知道的很少,但我尝试但失败的是创建一个表,其中 EmployeeID 等于 SupportRepID 来识别员工。 SupportRepID 将与客户 ID 相匹配,因此在发票表中,当我们提取每个客户 ID 的总计时,它会在表中将每个金额提供给帮助该客户以解决此问题的员工。但是,我非常不知道如何执行此操作,因此如果有人可以帮助我,我将非常感激!另外,这只是2012年的,我也不知道如何具体说明。

sql sqlite
1个回答
0
投票

此查询使用 CTE 来:

  1. 对每个客户的销售额求和并标记相关的 SalesRepId。
  2. 计算每个销售代表员工的客户销售总额。
  3. 以员工姓名显示结果,按销售额从最高到最低排序。
WITH CustomerSales AS (
SELECT       I.CustomerId
            ,C.SalesRepID
            ,SUM(I.Total) AS CustomerSales
FROM         Invoice AS I
INNER JOIN   Customer AS C ON C.CustomerId=I.CustomerId
GROUP BY     I.CustomerId
            ,C.SalesRepID
)

SELECT       E.EmployeeId
            ,E.FirstName
            ,E.LastName
            ,SUM(CS.CustomerSales) AS EmployeeSales
FROM         Employee AS E
INNER JOIN   CustomerSales AS CS ON CS.SalesRepID=E.EmployeeId
GROUP BY     E.EmployeeId
            ,E.FirstName
            ,E.LastName
ORDER BY     SUM(CS.CustomerSales) DESC
© www.soinside.com 2019 - 2024. All rights reserved.