HackerRank Intermediate
- SQL Project Planning
이전 포스팅에서 다뤘던 해커랭크 SQL Project Planning 문제 풀이가 너무 복잡해서 간단한 버전의 풀이 방법을 고민하다가 답을 찾아서 다시 포스팅 해본다..ㅋㅋ
👉[TIL] 다중 CTE 활용한 복잡한 문제 해결 # MySQL # SQL
[간단 버전 풀이]
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
[문제 설명]
- 이전 포스팅 참고
[해결]
- End_Date가 Start_Date 리스트에 없는 시점이 프로젝트별 종료 시기이다.
- 이전 풀이는 이 아이디어를 기반으로 작성했다. 하지만 동일한 아이디어를 Start_Date에 적용시키지 못했다.
- 마찬가지로 Start_Date가 End_Date 리스트에 없는 시점이 프로젝트별 시작 시기이다.
[회고]
이렇게 간단하게 해결될 문제를...CTE를 4개나 써가며 풀었다. 그래도 논리를 하나하나 코드로 구현하고 원하는 결과를 얻기위해 개선하는 작업은 충분히 의미있었다고 생각한다..앞으로 해결 실마리, 아이디어가 떠올랐을 때 그 아이디어에서 그치는 것이 아니라 더 디벨롭할 수 있는지 다시 생각해보는 습관을 길러야겠다!
'DA Study > TIL' 카테고리의 다른 글
[GPT 출제] 팔로워 수 대비 평균 좋아요 수 TOP 5 유저 #SQL #MySQL #GPT코테 (0) | 2025.05.26 |
---|---|
[GPT 출제] 최근 6개월 간 가장 많이 출금한 고객 TOP 5 #SQL #MySQL #GPT코테 (0) | 2025.05.25 |
[TIL] 다중 CTE 활용한 복잡한 문제 해결 # MySQL # SQL (0) | 2025.04.09 |
[TIL] 재귀 쿼리 (Recursive CTE) # MySQL # SQL (0) | 2025.04.06 |
[TIL] 리스트에서 요소 개수 카운트하기, 문자열 길이 반환 함수(CHAR_LENGTH) 활용 #SQL #MySQL (0) | 2025.03.18 |