๋ชป ํ์ด์ ๋ค๋ฅธ์ฌ๋ ๋ต์ ๋ณด๊ณ ๊ณต๋ถํ๋ค
FROM์ ์ด ๊ฑฐ์ ์ธ๋ชจ๊ฐ ์๊ณ ๋ค๊ฐ์ ๊ฐ ์ปฌ๋ผ์ ๋ค ๋ฐ๋ก ๊ตฌํ๋ ์ ๊ทผ์ด ์ธ์๊น์๋ค
ํด์ปค๋ญํฌ๊ฐ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ํ๋ซํผ์ด ์๋๋ฐ ์ด ๋ฌธ์ ๋ง ๊ฐ์๊ธฐ ๊ธ๋ฐ์ง์ด๋ค ์ ๋ง ์ด๋ ต๋ค
์ด๋ฐ ๋ต์์ ๋ด์ผ ํ๋ค
์ปฌ๋ผ1: ๋ ์ง
์ปฌ๋ผ2: ์ฒซ๋ ๋ถํฐ ์ง๊ธ๊น์ง ๋งค์ผ ์ต์1๋ฒ ์ด์ ์ ์ถํ ์ฌ๋์, ๋ ์ด ๊ฐ์๋ก ์ ์ด์ง๋ ๊น๋๊ธฐ ํํ
์ปฌ๋ผ3, ์ปฌ๋ผ4: ์ด๋ ํ๋ฃจ์ ํํด ๊ฐ์ฅ ๋ง์ด ์ ์ถํ ์ฌ๋์ ์์ด๋์ ์ด๋ฆ, ๊ฐ์ ํ์์ธ ์ฌ๋ ์์ผ๋ฉด id ๋ฎ์๊ฑธ๋ก
๋ ์ง๋ณ๋ก ๊ทธ๋ฃน๋ฐ์ดํด์ ๋ค ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๊ฐ ์๋๋ค!
ํนํ ์ปฌ๋ผ2๊ฐ ๊ตฌํ๊ธฐ ์ด๋ ต๋ค
SELECT s1.submission_date -- first column
, (SELECT COUNT(DISTINCT s2.hacker_id) -- second column
FROM submissions s2
WHERE s2.submission_date = s1.submission_date
AND (SELECT COUNT(DISTINCT s3.submission_date)
FROM submissions s3
WHERE s3.hacker_id = s2.hacker_id
AND s3.submission_date < s1.submission_date) = DATEDIFF(s1.submission_date, '2016-03-01'))
, (SELECT s2.hacker_id -- third column
FROM submissions s2
WHERE s2.submission_date = s1.submission_date
GROUP BY hacker_id
ORDER BY COUNT(submission_id) DESC, hacker_id
LIMIT 1) AS what
, (SELECT name FROM hackers WHERE hacker_id = what) -- fourth column
FROM (SELECT DISTINCT submission_date FROM submissions) s1
GROUP BY 1
์ค๋ณต์ ๊ฑฐํ ๊ณ ์ ํ ๋ ์ง๋ง ์๋ ํ ์ด๋ธ์ด s1.
์จ์ ํ ํ ์ด๋ธ์ด s2์ s3.
์ปฌ๋ผ2(๋งค์ผ๋งค์ผ ์ ์ถํ ์ฌ๋์) ๊ตฌํ๊ธฐ:
1. ๋ ์ง๋ง ์๋ s1๊ณผ ์ฌ๋์ ๋ณด๊ฐ ์๋ s2๋ฅผ s1๋ ์ง = s2๋ ์ง ๊ธฐ์ค์ผ๋ก ์กฐ์ธํ๋ค.
2. ๋์ผํ ๋ ํ ์ด๋ธ s2์ s3์ s2.ํด์ปคid = s3.ํด์ปคid ๊ธฐ์ค์ผ๋ก ์ ํ์กฐ์ธํ๋ค.
3. s1๊ณผ s3์ ์ด์ฉํ ์กฐ๊ฑด์ ๋ง๋ ๋ค. [s1๋ณด๋ค ๊ณผ๊ฑฐ์ธ s3 ์ญ๋ ์ ์ถ์ผ ๊ฐ์ = ์ฒซ๋ ๋ถํฐ s1๊น์ง์ ์ผ์ ์ฐจ์ด] ์กฐ๊ฑด์ ํด๋นํ๋ ํด์ปค๋ฅผ ์ฐพ์ผ๋ฉด ๋งค์ผ๋งค์ผ ํ ์ฌ๋์ ์ ์ ์๋ค. ์๋ฅผ ๋ค์ด s1์ด 3์ 4์ผ์ธ๋ฐ ์ญ๋ ์ ์ถ์ผ์ 3์ 1์ผ, 3์ 2์ผ, 3์ 3์ผ์ด ๋ค ์์ผ๋ฉด ์ข๋ณ์ 3์ด๋ค. ์ฐ๋ณ์ '2016-03-04' ๋นผ๊ธฐ '2016-03-01'์ ๊ฒฐ๊ณผ๋ 3์ด๋ค. ๊ทธ๋ฌ๋๊น day3๊น์ง ์ผ์ผ์น ์ ์ถ์ ๋ค ํ๋จ๊ฑฐ๋ค.
4. s1๋ ์ง = s2๋ ์ง๋ก ๋์ด์์ผ๋, s2์ ํด์ปคid ์๋ฅผ ์ผ๋ค.
๋ด ๋น์ฅ ์์ค์์ s3์ด ๋ฐ๋ก ํ์ํ๋ค ํ๋จํด ์ ํ์กฐ์ธํ ์๊ฐ์ ํ ์ ์์ ๊ฑฐ ๊ฐ๋ค. s2์ s3๊ฐ ๋๋ค ๋ฑ์ฅํ๋ ์ด ํํธ๊ฐ ์ฟผ๋ฆฌ ๋ณด๋ฉด์๋ ์ด๋ ค์ ๋ค.
์ปฌ๋ผ3,4(๋น์ผ ํ๋ฃจ์ ์ต๋ค์ ์ถ์ id, ์ด๋ฆ) ๊ตฌํ๊ธฐ:
์ปฌ๋ผ3: ํด์ปค ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃน๋ฐ์ด, ์ ์ถํ์ ๋ด๋ฆผ์ฐจ์๊ณผ ์์ด๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ, ์ฒซ์ค๋ง LIMIT
์ปฌ๋ผ4: ์ปฌ๋ผ3์ ๋ณ์นญ๊ณผ ๋์ผํ id์ผ ๋ ์ด๋ฆ ๋ถ๋ฌ์ค๊ธฐ
์ด๊ฑด ์ด๋ ต์ง ์๋ค.
'๐ฌ MySQL > HackerRank ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HackerRank] Print Prime Numbers (Medium) (0) | 2022.11.24 |
---|---|
[HackerRank] Ollivander's Inventory (Medium) (1) | 2022.11.15 |
[HackerRank] SQL Project Planning (Medium) (0) | 2022.11.09 |
[HackerRank] The PADS (Medium) (0) | 2022.11.07 |
[HackerRank] New Companies (Medium) (0) | 2022.11.01 |
๋๊ธ