Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

하루에 하나씩 공부하기

[해커랭크-Advanced Join] SQL Project Planning (재도전) 본문

카테고리 없음

[해커랭크-Advanced Join] SQL Project Planning (재도전)

dltaexox 2025. 9. 11. 15:52

- 문제

겹치지 않는 기간 찾기

 

SQL Project Planning | HackerRank

 

SQL Project Planning | HackerRank

Write a query to output the start and end dates of projects listed by the number of days it took to complete the project in ascending order.

www.hackerrank.com

 

- 키포인트 

어떻게 해야 END와 START를 묶을 수 있을까?

자기 테이블 두개를 조인하려 했는데 이렇게 하는게 아닌 것 같음

LAG도 고민했으나 이 방법도 아니라 생각(데이터가 예시처럼 연속적으로 있지 않을 수도) << 이건 OVER (ORDER BY ~)에서

설정 가능.. 

 

- 쿼리

SELECT START_DATE, MIN(END_DATE)
FROM 
(SELECT START_DATE
FROM PROJECTS
WHERE START_DATE NOT IN (SELECT END_DATE FROM PROJECTS)) A,
(SELECT END_DATE
FROM PROJECTS
WHERE END_DATE NOT IN (SELECT START_DATE FROM PROJECTS)) B
WHERE START_DATE<END_DATE
GROUP BY START_DATE
ORDER BY DATEDIFF(MIN(END_DATE), START_DATE), START_DATE

 

GROUP BY를 사용하면 GROUP BY에 있는 절, 혹은 집계함수 사용한 컬럼만 SELECT절에 사용 가능

 

윈도우함수는 SELECT, ORDER BY 절에서만 사용 가능

WHERE, GROUP BY에서 쓰려면 서브쿼리나 CTE 사용해야 함