Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[LeetCode] 184. Department Highest Salary

์ธ” 2022. 8. 25. 11:48

๐Ÿ“ข ๋ณธ ํฌ์ŠคํŒ…์— ํ™œ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ ๋ฐ ์ž๋ฃŒ ์ถœ์ฒ˜๋Š”

       ๋ฆฌํŠธ์ฝ”๋“œ Problems, https://leetcode.com/problemset/all/ ์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.


โ–  ๋ฌธ์ œ

https://leetcode.com/problems/department-highest-salary/

 

Department Highest Salary - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

โ–  ํ’€์ด

Employee ํ…Œ์ด๋ธ” (id, name, salary, deparment)Department ํ…Œ์ด๋ธ” (id, name) ์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ๋ถ€์„œ๋งˆ๋‹ค ๊ฐ€์žฅ ๋งŽ์€ ์ž„๊ธˆ์„ ๋ฐ›๋Š” ๊ทผ๋กœ์ž๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

Write an SQL query to find employees who have the highest salary in each of the departments.
SELECT e2.Department, e2.Employee, e2.Salary
 FROM
    (SELECT d.name AS Department,
           e.name AS Employee,
           e.salary AS Salary,
           MAX(e.salary) OVER (PARTITION BY d.name) AS max_salary
     FROM Employee e
     INNER JOIN Department d
     ON e.departmentID = d.id) e2
WHERE e2.salary = e2.max_salary;

 

Employee์™€ Department๋Š” ์กฐ์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ ์ •๋ณด๊ฐ€ ๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋‹ค.

๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ๊ณตํ†ต์ปฌ๋Ÿผ์œผ๋กœ ์กฐ์ธํ•˜์—ฌ (e2) ๊ฐ ๊ทผ๋กœ์ž์— ๋Œ€ํ•œ ๋ฐฐ์น˜ ๋ถ€์„œ๋ฅผ ํ™•์ธํ•˜๊ณ 

์œˆ๋„์šฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ๋ถ€์„œ๋ณ„ ์ตœ๋Œ€ ์ž„๊ธˆ์„ ์ปฌ๋Ÿผ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

> MAX(e.salary) OVER (PARTITOIN BY d.name)

 

๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์กฐ์ธํ•œ ํ…Œ์ด๋ธ”์„ FROM์ ˆ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ์‚ฌ์šฉํ•˜๋ฉด

์ค‘์š” *๋ถ€์„œ๋ณ„ ๊ทผ๋กœ์ž์˜ ์ž„๊ธˆ์„ ๋ถ€์„œ๋ณ„ ์ตœ๋Œ€ ์ž„๊ธˆ๊ณผ ๋น„๊ตํ•ด์„œ

SELECT์ ˆ์—์„œ ๋ถ€์„œ, ๊ทผ๋กœ์ž๋ช…, ์ž„๊ธˆ(๋‹จ ๋ถ€์„œ๋ณ„ ์ตœ๋Œ€ ์ž„๊ธˆ์„ ๋ฐ›๋Š” ์‚ฌ๋žŒ๋งŒ) ์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.