mun dev

[HackerRank] SQL Project Planning 오라클 풀이 본문

알고리즘/HackerRank

[HackerRank] SQL Project Planning 오라클 풀이

mndev 2024. 2. 2. 13:32

문제링크

 

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

 

풀이

1. 연속하는 행끼리 그룹화하기 위해 ROW_NUMBRT()를 사용

2. ROW_NUMBER()함수는 ORDER BY 조건대로 정렬한 테이블의 행번호를 반환

3. 행의 집합의 날짜가 연속한다면 START_DATE가 1씩 커진다면, 행번호 도한 일정하게 커지므로 연산한 결과는 같은 값을 가지게 된다.

4. 걸린시간으로 먼저 정렬을 해야하므로 MAX, MIN함수를 사용해 걸린 시간을 계산한다.

 

 

코드

select min(start_date), max(end_date)
from (
    select start_date
           , end_date
           , start_date - row_number() over(order by start_date) as prj
    from projects p)
group by prj
order by max(end_date) - min(start_date), min(start_date);