๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
๋ฆฌํธ์ฝ๋ Problems, https://leetcode.com/problemset/all/ ์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
https://leetcode.com/problems/department-highest-salary/
โ ํ์ด
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์ ์์ ๋ถ์, ๊ทผ๋ก์๋ช , ์๊ธ(๋จ ๋ถ์๋ณ ์ต๋ ์๊ธ์ ๋ฐ๋ ์ฌ๋๋ง) ์ ์ถ๋ ฅํ ์ ์๋ค.
'Growth ๐ณ > Practice ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ์ฐ์ ์ ์๊ฑฐํธ๊ฐ ๋ด๊ธด ์ฅ๋ฐ๊ตฌ๋ (0) | 2022.08.25 |
---|---|
[Programmers] ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2) (1) | 2022.08.25 |
[Programmers] ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(2) (1) | 2022.08.25 |
[Programmers] ์ค์ฑํ ์ฌ๋ถ ํ์ ํ๊ธฐ (0) | 2022.08.25 |
[Programmers] ๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ (2) | 2022.08.25 |