OkBublewrap

Project Planning 본문

개발/SQL

Project Planning

옥뽁뽁 2025. 1. 10. 14:01

Project Planning

문제 설명

  1. Start_date ~ End_date의 차이는 항상 1일임이 보장된다.
  2. End_date가 연속적이라면, 해당 작업들은 같은 프로젝트의 일부로 간주
  3. 완료된 프로젝트의 총 개수를 확인
  4. 프로젝트 완료 까지 걸린 일수 기준으로 오름차순 정렬
  5. 프로젝트 시작일을 기준으로 오름차순 정렬

입력 테이블

  1. Project
    • Task_ID
    • Start_Date
    • End_Date

풀이

1. End_Date가 연속된 프로젝트 그룹화

  • 1일 차이나는 end_date
  • 2025-01-06 첫번쨰 -1 2025-01-05
  • 2025-01-07 두번째 -2 2025-01-05
    Row_number() 사용

(
select *,
   end_date - row_number() over (order by end_date) as project_group
from Projects
order by end_date asc
)

2. 프로젝트 그룹화 중 최솟값, 최대값, 정렬

select min(start_date), max(end_date)
from 
(
   select *,
      end_date - row_number() over (order by end_date) as project_group
   from Projects
   order by end_date asc
) a
group by a.project_group
order by max(end_date) - min(start_date) asc, min(start_date) asc

'개발 > SQL' 카테고리의 다른 글

부모의 형질을 모두 가지는 대장균 찾기  (0) 2025.01.10
Symmetric Pairs  (0) 2025.01.10
Challenges  (0) 2025.01.10
Average Selling Price  (0) 2025.01.10
특정 기간동안 대여 가능한 자동차들의 대여 비용 구하기  (0) 2025.01.10