[TIL] MySQL TIL Day 4

์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

๐ŸŸก [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

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ