DATETIME SELECT SELECT INTO DATE PAD STRING DYNAMIC SQL CURSOR MONEY FORMAT PERCENT STORED PROCEDURE SQL SERVER AGENT JOB OPTIMIZATION WHILE LOOP OVER PARTITION BY UPDATE
 
 
SITE SEARCH SQLUSA.com VIDEOS
 
 
SQL E/BOOKS   WORLD, USA & SQL NEWS   FORMAT
SCRIPTS SQL 2005 SQL 2008 ARTICLES
How to find the top n salaries by department?

Execute the following Microsoft SQL Server T-SQL script in SSMS Query Editor to calculate the top 5 salaries for each department.

To simplify the main SELECT, the query uses triple-nested CTEs for the calculation along with the ROW_NUMBER(), OVER and PARTITION BY new features of SQL Server 2005 T-SQL.

USE AdventureWorks;

DECLARE @n int

SET @n=5 

;WITH cteLastRaiseDate (EmployeeID, LastChangeDate)

AS

(

SELECT EmployeeID, MAX(RateChangeDate)

FROM HumanResources.EmployeePayHistory

GROUP BY EmployeeID

),

ctePayRate(EmployeeID, Rate)

AS

(

SELECT eph.EmployeeID, eph.Rate

FROM HumanResources.EmployeePayHistory eph

JOIN cteLastRaiseDate lrd

ON eph.EmployeeID = lrd.EmployeeID

AND eph.RateChangeDate = lrd.LastChangeDate

),

cteSalaryMaxDown as

(

SELECT Department = d.Name, Rate,

[SeqNoMaxDown] = row_number() over (partition by d.DepartmentID order by Rate Desc)

FROM ctePayRate eph

JOIN HumanResources.Employee e

ON eph.EmployeeID = e.EmployeeID

JOIN HumanResources.EmployeeDepartmentHistory edh

ON edh.EmployeeID = e.EmployeeID

JOIN HumanResources.Department d

ON edh.DepartmentID = d.DepartmentID

WHERE EndDate is null)

 

select Department, Rate='$'+convert(varchar,Rate), SeqNoMaxDown

from cteSalaryMaxDown

where SeqNoMaxDown < @n

Order by Department

 

 

 

Partial Results:

Department Rate     SeqNoMaxDown
Document Control $17.79 1
Document Control $16.83 2
Document Control $16.83 3
Document Control $10.25 4
Document Control $10.25 5
Engineering $63.46 1
Engineering $43.27 2
Engineering $36.06 3
Engineering $32.69 4
Engineering $32.69 5
Executive $125.50 1
Executive $60.10 2
Facilities and Maintenance $24.04 1

 

Exam Prep 70-461
SQL 2016 DESIGN & PROGRAMMING
 
 
 
DATETIME SELECT SELECT INTO DATE PAD STRING DYNAMIC SQL CURSOR MONEY FORMAT PERCENT STORED PROCEDURE SQL SERVER AGENT JOB OPTIMIZATION WHILE LOOP OVER PARTITION BY UPDATE