我有一個表領域部門,僱員和工資的員工。我想要一個查詢來列出部門明智的最高工資和僱員的名字與該工資。集團的條款,以獲得最高薪酬員工的名字
我知道這很簡單。我用Google搜索,但發現答案是這樣,僅列出了部門和工資
SELECT dept, SUM (salary)
FROM employee
GROUP BY dept;
我有一個表領域部門,僱員和工資的員工。我想要一個查詢來列出部門明智的最高工資和僱員的名字與該工資。集團的條款,以獲得最高薪酬員工的名字
我知道這很簡單。我用Google搜索,但發現答案是這樣,僅列出了部門和工資
SELECT dept, SUM (salary)
FROM employee
GROUP BY dept;
SQL Server 2008支持Window Functions
,幫助你得到你想要的東西。
WITH recordList
AS
(
SELECT dept, employeeName, salary,
DENSE_RANK() OVER (PARTITION BY dept ORDER BY salary DESC) rn
FROM employee
)
SELECT dept, employeeName, salary
FROM recordList
WHERE rn = 1
SELECT e.*, d.deptname
FROM employee e
JOIN department d ON e.deptid = d.deptid
WHERE EXISTS (SELECT 1
FROM employee e_in
JOIN department d_in ON e_in.deptid = d_in.deptid
WHERE d_in.deptid = d.deptid
GROUP BY d_in.deptid
HAVING MAX(e_in.salary) = e.salary)
這將做到這一點。
SELECT E1.DEPT, E2.ENAME, E1.HIGHEST_SALARY
FROM
(SELECT DEPT, MAX(SALARY) HIGHEST_SALARY
FROM EMPLOYEE
GROUP BY DEPT) E1
INNER JOIN EMPLOYEE E2 ON E1.HIGHEST_SALARY = E2.SALARY
AND E1.DEPT = E2.DEPT
select * from (select salary,last_name,dense_rank()
over (order by salary desc)
sal_rank from employees) where sal_rank <=3;
這一切......這是下面的輸出:
SALARY LAST_NAME SAL_RANK
---------- ------------------------- ----------
24000 King 1
17000 Kochhar 2
17000 De Haan 2
14000 Russell 3
什麼[RDBMS](http://en.wikipedia.org/wiki/Relational_database_management_system)您使用的? 'RDBMS'代表*關係數據庫管理系統*。 'RDBMS是SQL'的基礎,對於所有現代數據庫系統,如MS SQL Server,IBM DB2,Oracle,MySQL等... – 2013-03-21 05:03:34
我正在使用mthql 2008 – Sharun 2013-03-21 05:04:32
'ORDER BY'和'LIMIT'。並非您需要的所有代碼都可以來自Google。有時你需要爲自己思考。有時你需要_learn._ – 2013-03-21 05:05:20