๐ ๋ณธ ํฌ์คํ ์์ ์ฌ์ฉ๋๋ ํ ์ด๋ธ์ ์๋ฃ์ ์ถ์ฒ๋ HackerRank ์์ ๋ฐํ๋๋ค. ๋ ๋ค์ํ SQL ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ ค๋ฉด
HackerRank ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํด ๋ณด์ธ์!
์ด๋ฒ ํฌ์คํ ์ HackerRank ์ฌ์ดํธ์ The PADS ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ ค๊ณ ํ๋ค. ๋์ด๋๋ Medium ์ด์ง๋ง ์์ ์ธ๋ก ์ฝ๊ฒ ํด๊ฒฐํ๋ค. ํ์ง๋ง ์ด๋ ต์ง ์์ ๋ฌธ์ ์์๋ ๋ธ๋ก๊ทธ์ ๊ฒ์ํ๋ ์ด์ ๋ ๋ฐ๋ก MySQL์ด ์๋ MS SQL์ ์ด์ฉํด ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, MySQL ๋ฌธ๋ฒ์ผ๋ก๋ ํด๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฌธ์ ์๋ณธ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํด ์ดํด๋ณด๊ณ ๋ฌธ์ ์์ ์๊ตฌํ๋ ์ฌํญ์ ํ์ธํด๋ณด์.
๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ 2๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ธธ ์ํ๋ค.
- ์ฃผ์ด์ง ํ ์ด๋ธ์ Name์ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌํด ์ถ๋ ฅํ๋๋ฐ, ๋์ ๊ฐ Name์ ํด๋นํ๋ Occupation์ ์ฒซ ๋ฌธ์์ด์ ์ฒจ๊ฐํด์ ์ถ๋ ฅ์์ผ๋ผ. ex) James๋ผ๋ ์ด๋ฆ์ด Professor ์ง์ ์ ๊ฐ๊ณ ์๋ค๋ฉด, James(P) ๋ก ์ถ๋ ฅํด๋ผ.
- ๊ฐ Occpuation์ ์ํ๋ Name์ ์นด์ดํธํด๋ผ. ์ด ๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ๋๋ฐ, 1์ฐจ ์ ๋ ฌ๊ธฐ์ค์ [occupation_count] ์ค๋ฆ์ฐจ์์ผ๋ก ํ๊ณ 2์ฐจ ์ ๋ ฌ๊ธฐ์ค์ [occpuation]์ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌํด๋ผ.
2๋ฒ์์ ์๊ตฌํ๋ ์ถ๋ ฅ ํํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
There are a total of [occupation_count] [occpuation]s.
๊ทธ๋์ ์ต์ข ์ถ๋ ฅ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ๋ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ฌธ๋ฒ์ ๋ฌธ์์ด ์ฌ๋ฌ๊ฐ๋ฅผ ์ด์ด ๋ถ์ด๋ CONCAT()
์ด์๋ค. ๋ ๋ฌธ์์ด ์ผ๋ถ๋ฅผ ์ถ์ถํ๋ LEFT()
๋ ์๋ฌธ์๋ก ๋ฐ๊พธ์ด์ฃผ๋ LOWER()
์ด ์ฌ์ฉ๋์๋ค. ์ด์ธ์ ์ฌ์ฉ๋ ๋ฌธ๋ฒ์ ํ์์ ์์ฃผ ์ฐ์ตํด๋ดค๋ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ๋ค์ด์๋ค. ํ์ด๋ฅผ ์ดํด๋ณด์.
SELECT CONCAT(name, '(', LEFT(occupation, 1), ')')
FROM Occupations
ORDER BY name
SELECT CONCAT('There are a total of ', COUNT(name), ' ', LOWER(occupation),'s.')
FROM Occupations
GROUP BY occupation
ORDER BY COUNT(name), occupation
ํ์ด๊ฐ ๋น๊ต์ ๊ฐ๋จํ๋ค. ํ์ง๋ง ํ์๊ฐ ์ฒ์ ๋ช ๋ฒ ์๋์์ ๋งํ๋ ๋ถ๋ถ์ด ์์๋๋ฐ ๋ฐ๋ก MySQL์ ์ฌ์ฉํ ์ ์ด์๋ค. MySQL์ ํ์ฉํด ํด๊ฒฐํ๊ธฐ ์ํด ์ ์ฟผ๋ฆฌ ์ํ์์ SELECT ๋ฌธ ์ฌ์ด์ UNION
, UNION ALL
์ ์ฌ์ฉํ๊ธฐ๋ ํ๋๋ฐ ์๋ํ์ง ์์๋ค. ์๋ํ๋ฉด UNION
๊ฐ์ ๊ฒฝ์ฐ, ๋ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์ฐ์์ ์ผ๋ก ์ถ๋ ฅํ๊ธฐ ์ํด์๋ ๋ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ์ถ์ถํ๋ ค๋ ์นผ๋ผ์ด ๋ชจ๋ ๊ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐธ๊ณ ๋ก UNION
, UNION ALL
๋ฌธ๋ฒ์ ์ฐจ์ด์ ์ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ์ง ์์ผ๋ฉด UNION
, ์ค๋ณต๋ ๋ฐ์ดํฐ๊น์ง ๋ชจ๋ ์ถ๋ ฅ์ํค๋ ค๋ฉด UNION ALL
์ด๋ผ๋ ์ ์ด๋ค.
๊ทธ๋์ MS SQL์ ์ฌ์ฉํด๋ณด์๊ณ ์ ์ฟผ๋ฆฌ๋ฅผ ์ ์ถํ๋๋ ์ ๋ต์ผ๋ก ์ฒ๋ฆฌ๋์๋ค. ๋ฐ๋ผ์ ๋ ๊ฐ ์ด์์ ์ฟผ๋ฆฌ๋ฅผ ํ ๋ฒ์ ์ถ๋ ฅํ ๋, ์ถ์ถํ๋ ค๋ ๊ฐ๋ค์ด ์๋ก ๋ค๋ฅผ ๊ฒฝ์ฐ MS SQL์ ์ด์ฉํด ๋จ์ํ ์ฟผ๋ฆฌ๋ฅผ ์ฐ์์ ์ผ๋ก ๋์ดํด์ฃผ๋ฉด ๋๋ค.
๋ํ MS SQL๋ UNION
, UNION ALL
๋ฌธ๋ฒ์ ์ ๊ณตํ๋ค๋ ์ ์ฐธ๊ณ ๋ก ์์๋์.
'SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL] HackerRank - SQL Project Planning ๋ฌธ์ (0) | 2021.03.04 |
---|---|
[SQL] HackerRank - Contest Leaderboard ๋ฌธ์ (0) | 2021.03.02 |
[SQL] HackerRank - Ollivander's Inventory ๋ฌธ์ ํ์ด (5) | 2021.02.25 |
[SQL] HackerRank - Top Competitors ๋ฌธ์ ํ์ด (2) | 2021.02.22 |
[SQL] ์ฐ์์ ์ธ JOIN ๊ตฌ๋ฌธ์ผ๋ก ํด๊ฒฐํ๊ธฐ(HackerRank - New Companies ๋ฌธ์ ) (0) | 2021.02.17 |