2017-05-12 54 views
0

我有以下表和數據:撰寫查詢以查找來自SQL Server中「Nagpur」生活表的最高薪水員工?

select * from Emp 

EmpId DeptId Salary 
101  1  3000 
102  2  4000 
103  3  3000 
104  1  5000 
105  2  7000 
106  3  10000 
107  3  20000 
108  2  10000 
109  1  10000 

Select * from EmpDetail 
EmpId Name Role City 
101  Rick QA  Nagpur 
102  John Dev  Pune 
103  Jane Dev  Mumbai 
104  Rock QA  Pune 
105  Shane Manager Mumbai 
106  Peter Dev  Nagpur 
107  Jackob Manager Nagpur 
108  Jeff QA  Pune 
109  Bob  Dev  Nagpur 

所以現在的問題是如何找到找到表誰是住在「那格浦爾」 SQL Server中的最高薪水的員工?

+5

您是否嘗試過的東西了嗎? –

+3

想想如果您必須手動完成,請如何解決此問題選擇居住在「Nagpur」的所有員工。使用該信息幫助您選擇薪資信息。現在,通過Salary訂購這些信息,並從最高到最低排序。然後從該列表頂部取一個項目(薪水最高的項目)。你能行的! – STLDeveloper

回答

0

這應該做的工作

select top 1 ed.*, e.salary form Emp e INNER JOIN EmpDetail ed 
ON e.ID=ed.ID 
WHERE ed.City='Nagpur' 
order by e.Salary desc 

讓我知道這是否正常工作

0
;With Emp(EmpId,DeptId,Salary) 
AS 
(
SELECT 101,1,3000 Union all 
SELECT 102,2,4000 Union all 
SELECT 103,3,3000 Union all 
SELECT 104,1,5000 Union all 
SELECT 105,2,7000 Union all 
SELECT 106,3,10000 Union all 
SELECT 107,3,20000 Union all 
SELECT 108,2,10000 Union all 
SELECT 109  ,1  ,10000 
) 
,EmpDetail(EmpId,Name,Role,City) 
AS 
(
SELECT 101,'Rick' ,'QA'  ,'Nagpur' Union all 
SELECT 102,'John' ,'Dev'  ,'Pune' Union all 
SELECT 103,'Jane' ,'Dev'  ,'Mumbai' Union all 
SELECT 104,'Rock' ,'QA'  ,'Pune' Union all 
SELECT 105,'Shane' ,'Manager' ,'Mumbai' Union all 
SELECT 106,'Peter' ,'Dev'  ,'Nagpur' Union all 
SELECT 107,'Jackob','Manager' ,'Nagpur' Union all 
SELECT 108,'Jeff' ,'QA'  ,'Pune' Union all 
SELECT 109,'Bob' ,'Dev'  ,'Nagpur' 
) 
SELECT TOP 1 E.EmpId 
    ,D.NAME 
    ,D.ROLE 
    ,E.DeptId 
    ,MAx(E.Salary) Salary 
    ,D.City 
FROM EmpDetail D 
INNER JOIN Emp E ON E.EmpId = D.EmpId 
WHERE D.City = 'Nagpur' 
GROUP BY E.EmpId 
    ,D.NAME 
    ,D.ROLE 
    ,E.DeptId 
    ,D.City 
ORDER BY Salary DESC 

輸出

EmpId NAME ROLE DeptId Salary City 
--------------------------------------------- 
107 Jackob Manager 3  20000 Nagpur