Advanced Join / Intermediate
๋ฌธ์
๐ ๋ฌธ์ ๋งํฌ : https://www.hackerrank.com/challenges/sql-projects/problem?isFullScreen=true
- ๋ค์๊ณผ ๊ฐ์ ํ ์ด๋ธ์์ end_date์ start_date๊ฐ ์ฐ์์ ์ผ๋ก ์ด์ด์ง๋ฉด ํ๋์ ํ๋ก์ ํธ๋ก ๊ฐ์ฃผํ๋ค.
- Start_Date ๊ณ ์ณ๊ฐ์ Start_date๊ฐ End_Date์ ์ผ์นํ์ง ์๋ ๊ฒ์ด๋ฉฐ, End_Date ๊ณ ์ณ๊ฐ ์ญ์, Start_date์ ์ผ์นํ์ง ์์ผ๋ฉด ํ๋์ ํ๋ก์ ํธ์ ์์์ผ๊ณผ ์ข ๋ฃ์ผ์ด ๋๋ค.
- ์ด ํฌ์ธํธ๋ก ๋ฌธ์ ๋ฅผ ํ๋ฉด ์๋์ ๊ฐ๋ค
ํ์ด
- FROM ์ ์ ๋ ๊ฐ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ฃ๋๋ค. ๊ฐ๊ฐ ํ๋ก์ ํธ๋ณ ๊ณ ์ ํ ์์์ผ๊ณผ ์ข
๋ฃ์ผ์ ์ถ์ถํ๋ ๊ฒ์ด๋ค.
- WHERE ์ ์ ์์์ผ์ด ์ข ๋ฃ์ผ์ ํฌํจ๋์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ํํฐ๋ง ํ๊ธฐ ์ํด SELECT ์ ์ ํ๋ฒ ๋ ์ผ๋ค.
- ์ ์ด๋ฏธ์ง์ ํ์๋ 1๊ณผ 2์ ๋ก์ง์ ๋์ผํ๋ค.
- ์ต์๋จ SELECT์ ์ ๋ FROM ์ ์ ํ ์ด๋ธ๋ก๋ถํฐ ์์์ผ๊ณผ ์ข ๋ฃ์ผ์ ๋ฐ์์ฌ ์ ์๋ค.
- ์ด๋, WHERE ์ ์ ์์์ผ๋ณด๋ค ์ข ๋ฃ์ผ์ด ์ด๋ฅธ(์์) ๊ฒฝ์ฐ๋ก ํํฐ๋ง์ ๊ฑธ์ด์ค๋ค.
- ์์์ผ์ ๊ธฐ์ค์ผ๋ก GROUP BY ํ๊ณ , ์ข ๋ฃ์ผ์ ์ต์๊ฐ์ ์ง์ ํด์ฃผ๋ฉด ์ํ๋ ๋ต์ด ๋์จ๋ค.(์ต์๊ฐ ์ ์ฉ์ ๊ณผ, ์๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํด๋ณด๋ฉด ์ ์ ์๋ค)
- ORDER BY ์กฐ๊ฑด์ DATEDIFF๋ฅผ ์จ์ ํ๋ก์ ํธ ๊ธฐ๊ฐ์ ์ฐ์ถํด์ค๋ค.
SELECT Start_Date, MIN(End_Date)
FROM(
SELECT Start_Date
FROM Projects
WHERE Start_Date NOT IN (SELECT End_Date FROM Projects)) AS a,
(SELECT End_Date
FROM Projects
WHERE End_Date NOT IN (SELECT Start_Date FROM Projects)) AS b
WHERE Start_Date < End_Date
GROUP BY 1
ORDER BY DATEDIFF(MIN(End_Date), Start_Date), Start_Date;
728x90
'SQL > SQL test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HackerRank] Interviews (Advanced Join) ํ์ด (2) | 2024.01.17 |
---|---|
[HackerRank] Occupations (Pivot) (0) | 2024.01.17 |
[HackerRank] Contest Leaderboard (0) | 2024.01.16 |
[HackerRank] Challenges (0) | 2024.01.16 |
[HackerRank] The Report (INNER JOIN - BETWEEN) (0) | 2024.01.15 |