DA Study/TIL

[TIL] SQL Project Planning 간단 풀이 # MySQL # SQL

harrym8n 2025. 4. 9. 14:16

HackerRank Intermediate - SQL Project Planning

이전 포스팅에서 다뤘던 해커랭크 SQL Project Planning 문제 풀이가 너무 복잡해서 간단한 버전의 풀이 방법을 고민하다가 답을 찾아서 다시 포스팅 해본다..ㅋㅋ

 

👉[TIL] 다중 CTE 활용한 복잡한 문제 해결 # MySQL # SQL

👉 문제 바로가기(HackerRank)

 

[간단 버전 풀이]

SELECT
    t1.Start_Date, MIN(t2.End_Date)
FROM 
    (SELECT Start_Date 
    FROM Projects 
    WHERE Start_Date NOT IN 
    (SELECT End_Date FROM Projects)) t1,
    (SELECT End_Date 
    FROM Projects 
    WHERE End_Date NOT IN 
    (SELECT Start_Date FROM Projects)) t2
WHERE
    t1.Start_Date < t2.End_Date
GROUP BY
    t1.Start_Date
ORDER BY
    DATEDIFF(t1.Start_Date, MIN(t2.End_Date)) DESC, t1.Start_Date

[문제 설명]

  • 이전 포스팅 참고

[해결]

  1. End_Date가 Start_Date 리스트에 없는 시점이 프로젝트별 종료 시기이다.
    • 이전 풀이는 이 아이디어를 기반으로 작성했다. 하지만 동일한 아이디어를 Start_Date에 적용시키지 못했다.
  2. 마찬가지로 Start_Date가 End_Date 리스트에 없는 시점이 프로젝트별 시작 시기이다.

[회고]

이렇게 간단하게 해결될 문제를...CTE를 4개나 써가며 풀었다. 그래도 논리를 하나하나 코드로 구현하고 원하는 결과를 얻기위해 개선하는 작업은 충분히 의미있었다고 생각한다..앞으로 해결 실마리, 아이디어가 떠올랐을 때 그 아이디어에서 그치는 것이 아니라 더 디벨롭할 수 있는지 다시 생각해보는 습관을 길러야겠다!