240425 Today I Learn
ํด์ปค๋ญํฌ์์ ์๋ ๋ฌธ์ ๋ฅผ ํ๋ ์ค mysql์์ UNION ์ฌ์ฉ์ ์ ๋ ฌ์ด ํ์ด์ง๋ ํ์์ ๋ฐ๊ฒฌํ๋ค. ์๋ ๋ฌธ์ ๋ฅผ ํ์ดํ๋ฉด์ ์๊ฒ๋ ๋ช๊ฐ์ง ๋ด์ฉ๋ค์ ๊ธฐ์ต์ ๋จ๊ธฐ๊ณ ์ ๊ธฐ๋กํ๋ ค๊ณ ํ๋ค.
[๋ฌธ์ ] HackerRank. The Pads!
1. `Occupations`ํ
์ด๋ธ์ ์๋ ๋ชจ๋ ์ด๋ฆ์ ์ํ๋ฒณ์์ผ๋ก ๋์ดํ๊ณ , ์ง์
์ ์ฒซ๊ธ์๋ฅผ ๊ทธ ๋ค์ ๋ฐ๋ก ๋์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ผ. (์์ : AnActorName(A), ADoctorName(D), AProfessorName(P), and ASingerName(S).)
2. ๊ฐ๊ฐ์ `occupation`์ด ๋ช ๊ฐ์ธ์ง ๊ทธ ๊ฐ์๋ฅผ ๊ตฌํ๊ณ ๊ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด `There are a total of [occupation_count] [occupation]s.` ํํ๋ก ์ถ๋ ฅํ๋ผ
๋ฌธ์ ์ํฉ. ์ ์ ๋ ฌ์ด ์ ์ง๋์ง ์์๊น?
์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ๋์ ๊ณํ์ 1, 2๋ฒ ๊ฐ๊ฐ์ ํ์๊ณผ ์ ๋ ฌ์ ๋ง์ถฐ ๊ฐ๊ฐ์ ํ
์ด๋ธ์ union์ผ๋ก ๊ฒฐํฉํ๋ ๊ฒ์ด์๋๋ฐ,๊ทธ๋ ๊ฒ ํ๋ ์๋์ ๊ฐ์ด ์ ๋ ฌ์ด ๊นจ์ก๋ค.
trial #1
์ฒซ๋ฒ์งธ์ ๋๋ฒ์งธ ํ
์ด๋ธ ๋ชจ๋ concat, count๋ฅผ ์กฐ๊ธ ๋ ํธํ๊ฒ ์ด์ฉํ๊ธฐ ์ํด ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด ๋ ์๋ธ์ฟผ๋ฆฌ ์์์ ์ ๋ ฌ์ ์๋ํด๋ณด์๋ค. `name(occupation)`์ ์ถ๋ ฅํ ๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ๋ ฌ์ด ๋ง๊ฐ์ ธ์์ง๋ง, `There are a total of n occupations.`๋ฅผ ์ถ๋ ฅํ ๊ฒฝ์ฐ์๋ 3→4(actors)→4(singers)→7๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ์ด ๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
ํผ์ ๋๋ ์์๋ ๋์ ํ UNION ์ธ์๋ ํด๋ต์ด ์๊ฐ๋์ง ์์์ ํํฐ๋์ ์ฐพ์๊ฐ๊ณ , ํจ๊ป ๋ฌธ์ ๋ฅผ ๋
ผ์ํด๋ณด๊ฒ ๋์๋ค.
trial #2
์ต์ข
์ ์ผ๋ก UNION์ผ๋ก ๋ ํ
์ด๋ธ์ ๊ฒฐํฉํ ๋ค order by๋ฅผ ํด์ค ๊ฒฐ๊ณผ ์์ ๊ฐ์ด ๋ฌธ์ ์์ ์๊ตฌํ ์ ๋ต์ด ๋์๋ค.
โ UNION์ ์ฌ์ฉํ ๋ ์ด์ ํ ์ด๋ธ์ ์ ๋ ฌ์ด ์ ์ง๋ ๊น
์ ๋ต์ ์๋๋ค. ๋๋ฌธ์ unionํ๊ธฐ ์ด์ ๊ฐ๊ฐ์ ํ
์ด๋ธ์์ union์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ต์ฅํ ๋ฒ๊ฑฐ๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋๋ค. UNION์ ์ฌ์ฉํ ๋์๋ UNION์ด ๋๋ ํ ์ปฌ๋ผ๋ช
์ ์ง์ ํด ์ ๋ ฌ์ ํด์ฃผ์ด์ผ ํ๋ค.
extra
Hacker rank์ ๋ฌธ์ ์ ๋ํ ํ์ด๋ ์์ ์ฝ๋๋ก ๋์ด ๋ฌ์ง๋ง, result1์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ `There are a total of n occupations.`๋ผ๊ณ ์ถ๋ ฅ๋๋ ์ปฌ๋ผ์ด ๋งจ ๋ฐ์ ๋ถ์๊ฒ ์๋๊น ๋ผ๋ ๊ถ๊ธ์ฆ์ด ์๊ฒผ๋ค. (S๋ค์์๋ T๊ฐ ์ค๋๊น..)
๊ทธ๋์ ์์ ๊ฐ์ด `There are a total of n occupations.`๋ฅผ `count n occupations`๋ก ๋ฐ๊พธ์ด๋ณด์๋ค. ์์์ ๋ณผ ์ ์๋ฏ, ์ ๋ ฌ ๊ธฐ์ค์ด result1์ด๊ธฐ ๋๋ฌธ์ count๋ก ์์ํ๋ ๋๋ฒ์งธ ํ
์ด๋ธ์ ์ถ๋ ฅ๊ฐ๋ค์ด 6-9ํ์ ์์นํด์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ฌธ์ฅ์ ์์์ ๊ด๊ณ ์์ด ์ ๋ ฌ๋ ํ ์ด๋ธ 1, ํ ์ด๋ธ 2๋ฅผ ํ ์ด๋ธ ์์๋ก ์ ๋ ฌํ ์ ์์๊น?
์์ฝ๊ฒ๋ UNION์ ํ์ฉํด์ ์ ๋ ฌ์ ์ ์งํ๋ฉด์ ํ ์ด๋ธ์ ์์๋๋ก ๋ถ์ด๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋ค. ๊ทธ๋ฌ๋ UNION ALL์ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ 1๊ณผ ํ ์ด๋ธ 2๋ฅผ ์์๋๋ก ๋ถ์ผ ์๋ ์๋ค.
- UNION ALL์ ์ฌ์ฉํ๋ฉด ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฟผ๋ฆฌ๊ฐ ์ ์ฒด ํ ์ด๋ธ์ ์์๋๋ก ๋๋ค๊ณ ํ๋ค...! (์ฌ์ค ์ ํํ๋ ๊ธฐ์ต์ด ์๋๋๋ฐ ์ด๋ฐ ๋งฅ๋ฝ์ด์์..)
- ์ด ๋ ์ ์ ๋ต ์ฟผ๋ฆฌ๋ฌธ๊ณผ ๊ฐ์ด ํตํฉ๋ ํ ์ด๋ธ์ `order by result1`์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์ orderby์ ์ ๋นผ์ค์ผ ํ๋ค.
'๐ Today I Learn > ๐ My SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL Challenge ์ธ์ #3 ํผ๋(Funnel)๋ถ์ (0) | 2024.05.29 |
---|---|
SQL Challenge ์ธ์ #2 ์ด๋ํ๊ท ๊ณผ ๋น์จ (0) | 2024.05.27 |
SQL Challenge ์ธ์ #1 ์๋์ฐ ํจ์, WITH์ (0) | 2024.05.27 |
SQL ์ธ์ #1 (0) | 2024.05.04 |
[DBaver] csv ํ์ผ ๋ถ๋ฌ์ค๊ธฐ (ํ๊ธ ๊นจ์ง ํด๊ฒฐ๋ฒ) (0) | 2024.05.04 |