[SQL ps] Hackerrank SQL project planning

이찬행·2022년 5월 2일
0

SQL-문제풀이

목록 보기
4/7

문제

문제 풀이

  • 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)
               ), #end_date에 있지 않은 start_date와 rank 설정
     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)
                ) #start_date에 있지 않은 end_date와 rank 설정
                
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
;
profile
what's on your mind?

0개의 댓글