2012-04-20 100 views
0

我真的很困惑如何爲以下語句編寫查詢。SQL查詢 - 需要建議

如何顯示具有最高銷售數量(總數)和顯示位置的前5名員工作爲字段。請注意,如果兩個員工的總銷售價值相同,他們應該獲得相同的職位,換句話說,前五名員工可能會返回超過5名員工?

任何人都可以爲此提出答案嗎?

+2

你試過了什麼?你能顯示一些數據庫結構嗎?還有一些數據例子? – Arion 2012-04-20 10:35:08

+0

因此,如果前五名排名中有五名以上的員工,您想如何管理?例如,如果您有一名員工有100名銷售員,然後有5名員工有90名,然後有80名員工,您是否希望您的「前五名銷售分數」列表中的前六名,或者是否想要放棄其中一名員工有一個「前5名銷售人員」的名單,如果有的話,你有什麼標準選擇誰下降? – glenatron 2012-04-20 10:35:51

+0

如果不止一名員工具有相同的總銷售價值,則需要將所有員工列入「前五名」。 – manju 2012-04-20 10:39:50

回答

0

喜歡的東西:

WITH cte AS (
    SELECT 
     Rank() OVER (ORDER BY SUM(salary) DESC) AS [Rank] 
     , SUM(salary) as sum 
     , Employee 
    FROM 
     [table] 
    GROUP BY 
     Employee 
) 
SELECT * 
FROM cte 
WHERE [RANK] < 5 
ORDER BY sum DESC  

我重讀你的問題,看來你要找的銷售,而不是工資的總和的頂部計數,但當然,在這種情況下,你可以在OVER語句中使用COUNT(sales)