[TIL] MySQL TIL Day 4
๐ก [HackerRank] New Companies
https://www.hackerrank.com/challenges/the-company/problem?isFullScreen=true
Solution
์ฌ๋ฌ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ๊ณ , GROUP BY ํ ํ ๊ฐ ์นผ๋ผ์ uniqueํ ๊ฐ์ ๊ฐ์๋ฅผ ์ธ๊ธฐ ์ํด COUNT DISTINCT๋ฅผ ์ด์ฉํ์ฌ ํด๊ฒฐํ๋ ๋ฌธ์ ์ด๋ค.
์ฌ๋ฌ๊ฐ์ ํ ์ด๋ธ์ JOIN ํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค. FROM์ ์กฐ์ธํ ํ ์ด๋ธ๋ค์ ์ด๋ฆ์ ALIAS์ ํจ๊ป ์์ฑํ ํ WHERE ์ ์ ์ฐ๊ฒฐ๋ ์นผ๋ผ๋ค์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ฉด ๋๋ค.
# ์ฌ๋ฌ๊ฐ ํ
์ด๋ธ JOIN ๋ฐฉ๋ฒ
SELECT a.์นผ๋ผ, b.์นผ๋ผ, c.์นผ๋ผ ...
FROM ํ
์ด๋ธA a, ํ
์ด๋ธB b, ํ
์ด๋ธC c, ...
WHERE a.์นผ๋ผ์ด๋ฆ = b.์นผ๋ผ์ด๋ฆ ...
Code
SELECT c.company_code, c.founder, COUNT(DISTINCT l.lead_manager_code),
COUNT(DISTINCT s.senior_manager_code), COUNT(DISTINCT m.manager_code), COUNT(DISTINCT e.employee_code)
FROM company c, lead_manager l, senior_manager s, manager m, employee e
WHERE c.company_code = l.company_code AND
l.lead_manager_code = s.lead_manager_code AND
s.senior_manager_code = m.senior_manager_code AND
m.manager_code = e.manager_code
GROUP BY c.company_code, c.founder
ORDER BY c.company_code
๋๊ธ๋จ๊ธฐ๊ธฐ