2017-10-18 43 views
-2

我必須創建一個報表,顯示每個部門的最高工資。 我必須具有以下列,department_id,department_name,last_name和MAX(工資)。它不能包含任何重複。計算每個部門的最高工資

我設法得到所有列的查詢結果,但由於last_name列,我有一個查詢結果如下。

90, Executive, De Haan, 17000 

90, Executive, Kochhar, 17000 

80, Sales, Tucker, 10000 

80, Sales, Bernstein, 9500 

80, Sales, Hall, 9000 

顯然,執行部門的最高值是17000,銷售額是10000。我只需要爲每個部門顯示1個工資金額。有關我如何實現這一點的任何想法?

下面是我輸入到SQL中以獲得此結果。

SELECT DISTINCT department_id, department_name, last_name, MAX(salary) 

FROM employees 

NATURAL JOIN departments 

GROUP BY department_id, department_name, last_name 

ORDER BY MAX(salary) DESC; 
+1

僱員表中的列是什麼? – kbball

+0

Department_id,姓氏和薪水 –

+1

您有相互矛盾的要求。一方面,您希望包含姓氏,即在多人擁有最高薪水時提供多條記錄,另一方面您只需要每個部門記錄一條記錄。如果你真的只需要一個記錄,而且你不關心你返回哪個人,那麼你就需要看看像部門和薪水劃分的東西。並選擇第一條記錄。 – DeanOC

回答

0

因此,您需要找到每個部門ID的最高工資,然後返回到員工表來拉取姓氏。事情是這樣的:

SELECT sub.department_id, sub.department_name, emp.last_name, sub.max_sal 
FROM 
(SELECT e.department_id, d.department_name, MAX(e.salary) AS max_sal 
FROM employees e 
INNER JOIN departments d 
ON e.department_id = d.department_id 
GROUP BY e.department_id, d.department_name) sub 
INNER JOIN employees emp 
ON sub.department_id = emp.department_id 
AND sub.max_sal = emp.salary 

請注意,此解決方案將展示多的人,如果他們有同樣的薪水,它是最高的爲他們的部門。

相關問題