Tsql 如何选择销售业绩最好的员工

Tsql 如何选择销售业绩最好的员工,tsql,Tsql,我在数据库作业中遇到了这个问题 我需要回答这个问题: 选择员工的姓名和电子邮件地址 这是本月个人销售额最高的 因此,我基本上需要选择当月销售额最高的员工 以下是我所拥有的: SELECT FirstName + ' ' + LastName as 'Employee Name', Email FROM Employee INNER JOIN Sale ON Employee.EmployeeNumber = Sale.EmployeeNumber GROUP B

我在数据库作业中遇到了这个问题

我需要回答这个问题:

选择员工的姓名和电子邮件地址 这是本月个人销售额最高的

因此,我基本上需要选择当月销售额最高的员工

以下是我所拥有的:

SELECT 
    FirstName + ' ' + LastName as 'Employee Name', Email 
FROM 
    Employee 
INNER JOIN 
    Sale ON Employee.EmployeeNumber = Sale.EmployeeNumber
GROUP BY 
    Sale.SaleDate, Sale.SaleNumber, Employee.FirstName, Employee.LastName, Employee.Email
HAVING 
    DatePart(Month, SaleDate) = DatePart(Month, GetDate()) AND ...
我唯一缺少的是我陈述的第二部分

我当前的查询返回这些

这些结果显示了本月11月份的所有销售额,我们可以看到Tom Tucker的销售额最高。然而,我需要我的select查询只合法地显示他的名字。所以不使用WHERE FirstName+LastName='TomTucker'


我最初想使用MaxCountSaleNumber,但是我得到一个错误,说我不能在彼此之间使用聚合函数。因此,我不知道如何得到我想要的结果。

要解决这个问题,请将其分解为几个部分

本月获得最大销售额:

SELECT *
FROM Sale
WHERE DatePart(Month, SaleDate) = DatePart(Month, GetDate())
ORDER BY amt DESC
FETCH FIRST 1 ROW ONLY
连接到用户表

SELECT COALESCE(E.FirstName+' '+E.LastName,E.FirstName,E.LastName,'') as Employee_Name, E.Email 
FROM Employee E
JOIN (
  SELECT EmployeeNumber
  FROM Sale
  WHERE DatePart(Month, SaleDate) = DatePart(Month, GetDate())
  ORDER BY amt DESC
  FETCH FIRST 1 ROW ONLY
) On S.EmployeeNumber  = E.EmployeeNumber 
我们可以使用相同的技术来解决许多问题,以找到销售业绩最好的员工的详细信息,我们只需将内部查询替换为

-- select employee# with most sales this month
SELECT EmployeeNumber 
FROM (
  SELECT EmployeeNumber, Count(SaleNumber) as SC
  FROM Sale
  WHERE DatePart(Month, SaleDate) = DatePart(Month, GetDate())
) sub
ORDER BY SC DESC
FETCH FIRST 1 ROW ONLY

非常聪明,但是你正在抢占本月最大的销售额。我在找本月销售额最高的员工。在这个问题上,销售的货币价值无关紧要。感谢您抽出时间回答问题!:我一直到现在才知道这件事now@PierreGravelle-这是您问题中的报价-针对当月个人销售额最高的员工。@PierreGravelle-这是您问题中的报价。这就是我解决的问题,谢谢。我可能只是误解了问题中的措辞。@Pierregravel-因为我心情很好,我会告诉你如何做另一件事。