2016-11-04 69 views
-2

好的,我在數據庫作業中遇到了這個問題。如何選擇銷售量最大的員工

我需要回答這樣一個問題:

選擇僱員的姓名和電子郵件地址有當月最高個人出售員工 。

因此,我基本上需要選擇當月銷售額最高的員工。

這裏就是我有:

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 ... 

我唯一缺少的是我HAVING聲明的第二部分。

查詢我目前有回報這些current query results

這些結果表明我在本月(十一月)達成的所有銷售,我們可以看到湯姆·塔克擁有最多銷售。不過,我需要我的選擇查詢才能合法顯示他的名字。 (所以不使用WHERE(FirstName + LastName)='TomTucker')

我原本以爲使用Max(Count(SaleNumber)),但是我得到一個錯誤,說我不能在對方內使用聚合函數。所以我不知道如何得到我想要的結果。

謝謝!

+1

把東西更換內層查詢和較大的字體並不能實現。 – Hogan

+0

我知道。這是一個免責聲明,因此很重要。 –

+0

如果你不想要,你不需要回答。我只是在尋求幫助。請不要與我爭論我的決定,告訴人們我有意學習而不是複製/粘貼。 –

回答

1

爲了解決這個問題,它分成部分

獲取最大的本月銷售:

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 
+0

非常聰明,但是你抓住了當月最大的銷售。我正在尋找本月銷量最高的員工。出售的貨幣價值在這個問題上並不重要。不過謝謝您花時間回答! :)直到現在,我從來不知道FETCH –

+0

@PierreGravelle - 這是來自您的問題的引用 - 「對於當月具有最高單獨銷售額的員工」。 – Hogan

+0

然後,也許我誤解了這個問題... –