문제

문제 풀이
- Start_Date는 end_date에 있으면 안된다.
- End_Date도 Start_date에 있으면 안된다.
- 해당하는 start_date와 end_date에 순서를 정해주고 그 순서를 기준으로 join 해주면 consecutive한 값을 가질 수 있다.
WITH TEMP_S AS (SELECT START_DATE,
ROW_NUMBER() OVER (ORDER BY START_DATE) AS RNK
FROM PROJECTS
WHERE start_date NOT IN (SELECT distinct END_DATE FROM PROJECTS)
),
TEMP_E AS (SELECT END_DATE,
ROW_NUMBER() OVER (ORDER BY END_DATE) AS RNK
FROM PROJECTS
WHERE END_DATE NOT IN (SELECT distinct START_DATE FROM PROJECTS)
)
SELECT TEMP_S.START_DATE, TEMP_E.END_DATE
FROM TEMP_S
INNER JOIN TEMP_E
ON TEMP_S.RNK=TEMP_E.RNK
ORDER BY (TEMP_E.END_DATE-TEMP_S.START_DATE), 1
;