[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 5

2025. 1. 24. 16:07ยท๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ

 Lv4. ๊ฐ€์žฅ ๋†’์€ ์›”๊ธ‰์„ ๋ฐ›๋Š” ์ง์›์€? 

๋‚ด๊ฐ€ ํ‹€๋ฆฐ/๋†“์นœ ๋ถ€๋ถ„์€ ๋ฏผํŠธ์ƒ‰์œผ๋กœ ํ‘œ์‹œ!

 

1.
๊ฐ ์ง์›์˜ ์ด๋ฆ„, ๋ถ€์„œ, ์›”๊ธ‰, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ง์›์ด ์†ํ•œ ๋ถ€์„œ์—์„œ ๊ฐ€์žฅ ๋†’์€ ์›”๊ธ‰์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์ง์›์˜ ์ด๋ฆ„๊ณผ ์›”๊ธ‰์„ ์กฐํšŒํ•˜๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. 

๋‚˜์˜ ๋‹ต
select e2.Name,
e2.Department,
e2.Salary,
sub.Top_Earner,
sub.Top_Salary
from Employees e2 JOIN
(
select e.Department,
e.Name Top_Earner,
a.Top_salary
from Employees e join
(select Department,
max(Salary) Top_salary
from Employees
group by Department
) a on e.Department=a.Department
where e.salary=a.Top_salary
) sub on e2.Department=sub.Department
order by 
์ •๋‹ต
SELECT
e1.Name,
e1.Department,
e1.Salary,
e2.Name AS Top_Earner,
e2.Salary AS Top_Salary
FROM
Employees e1
JOIN
Employees e2 ON e1.Department = e2.Department
WHERE
e2.Salary = (
SELECT MAX(Salary)
FROM Employees e3
WHERE e3.Department = e1.Department
);
์˜ค๋‹ต ๋…ธํŠธ ๋‚˜์˜ ๋‹ต์€ Top_earner์™€ Top_salary๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ…Œ์ด๋ธ”์„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๋‘๋ฒˆ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, Where e3.Department=e1.Department ์ ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ ๊ณผ์ •์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ณ ๋ฏผํ•œ ์  1. ํ…Œ์ด๋ธ”์ด ํ•œ๊ฐœ์ธ๋ฐ ์™œ JOIN์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?
ใ€€=> ๋ถ€์„œ๋ณ„ ๊ฐ€์žฅ ๋†’์€ ์›”๊ธ‰์„ ์ฐพ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
ใ€€ใ€€ Top earner์™€ Top salary๋ฅผ ์ถ”์ถœํ•œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ , ๊ทธ๊ฑธ employees์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋ถ€์„œ์— ๋”ฐ๋ฅธ
ใ€€ใ€€ ์ตœ๊ณ  ์ˆ˜๋ น์ž๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

2. Selet ์ ˆ์—์„œ department, max(salary)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Top_salary๊ฐ€ ๋‚˜์™”๋Š”๋ฐ, Top_Earner๊นŒ์ง€ ์ฐพ๊ธฐ์œ„ํ•ด
ใ€€ Selet ์ ˆ์— department, name, max(salary)๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค. ์ด์œ ๋Š”?
ใ€€=>๋ถ€์„œ๋ณ„ ์ตœ๊ณ  ์›”๊ธ‰๊ณผ ๊ทธ ์ˆ˜๋ น์ž๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด gruop by๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ group by๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด select ์ ˆ์— ํฌํ•จ๋œ ์ปฌ๋Ÿผ๋“ค์€ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. name์€ group by ์ ˆ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€๋„ ์•Š๊ณ , ์ง‘๊ณ„ํ•จ์ˆ˜๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— name์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ• ์ง€ ๊ธฐ์ค€์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

2.
๋ถ€์„œ๋ณ„๋กœ ํ‰๊ท  ์›”๊ธ‰์ด ๊ฐ€์žฅ ๋†’์€ ๋ถ€์„œ์˜ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ๋ถ€์„œ์˜ ํ‰๊ท  ์›”๊ธ‰์„ ์กฐํšŒํ•˜๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๋‚˜์˜ ๋‹ต
select Department,
avg(Salary) Avg_Salary
from Employees
group by 1
having avg_salary=(select max(avg_sal)
from (select avg(Salary) avg_sal
from employees
group by Department
) a
)
์ •๋‹ต
SELECT
Department,
AVG(Salary) AS Avg_Salary
FROM
Employees
GROUP BY
Department
HAVING
AVG(Salary) = (
SELECT MAX(Avg_Salary)
FROM
(SELECT AVG(Salary) AS Avg_Salary
FROM Employees
GROUP BY Department) AS subquery
);
์˜ค๋‹ต ๋…ธํŠธ ํ—ท๊ฐˆ๋ฆฐ๋‹ค..
๊ณ ๋ฏผํ•œ ์  max(avg(salary))๋Š” ์ค‘์ฒฉ๋œ ์ง‘๊ณ„ ํ•จ์ˆ˜์ด๋ฉฐ, ์‚ฌ์šฉ๋ถˆ๊ฐ€ํ•˜๋‹ค. avg(salary)๋ฅผ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๊ทธ๋ฃนํ™”๋ฅผ ํ•œ ๋’ค, ๊ทธ ๊ฒฐ๊ณผ(Avg_Salary)์— ๋Œ€ํ•ด max()๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. 

 

'๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ > ์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 7  (0) 2025.01.25
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 6  (0) 2025.01.24
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 4  (0) 2025.01.23
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 3  (0) 2025.01.23
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 2  (0) 2025.01.23
'๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 7
  • [๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 6
  • [๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 4
  • [๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 3
aggeeeee
aggeeeee
ใ€€ φ(๏ผŽ๏ผŽ;)ใ€€๐Ÿ”œใ€€\_ใธ(โ–ญ-โ–ญ)โœจ
  • aggeeeee
    ๐Ÿฅ” ๋‹˜์˜ ๋ธ”๋กœ๊ทธ
    aggeeeee
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (155)
      • Today I Learned (25)
      • ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ (115)
        • ๋ณธ์บ ํ”„ ๊ณผ์ œ (17)
        • ์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ (23)
        • SQL ์ฝ”๋“œ์นดํƒ€ (44)
        • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ์นดํƒ€ (31)
      • ๐Ÿ’ป๐Ÿš€ (15)
        • Java (7)
        • Git & GitHub (1)
        • CS (4)
        • Spring & SpringBoot (3)
  • ๋งํฌ

  • ์ตœ๊ทผ ๊ธ€

  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
aggeeeee
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 5
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”