[TIL] 23.04.16

문종현·2023년 4월 16일
0

TIL

목록 보기
107/119
post-custom-banner

👉 오늘 한 일

  • 책 집필 - 편집 툴 적용
  • 해커랭크 SQL

해커랭크 SQL

1. SQL Project Planning 📌

  • medium, Advanced Join

  • https://www.hackerrank.com/challenges/sql-projects/problem?isFullScreen=true

  • Start_Date 중 End_Date에는 없는 Start_Date는 각 연속적이지 않고 개별적으로 시작하는 프로젝트의 시작날짜를 의미한다.

  • End_Date 중 Start_Date에는 없는 End_Date는 각 연속적이지 않고 개별적으로 시작하는 프로젝트의 종료날짜를 의미한다.

  • 따라서, 이 조건에 따라 derived table을 만들고 두 테이블을 조인한다. 이후 start_date가 end_date보다 큰 데이터는 제외시킨다.

  • 여기까지 하면 start_date가 중복으로 여러 개 겹친다. 이를 묶어주기 위해 start_date로 그룹화하고 end_date는 출력하기 위해 MIN으로 묶어준다.

SELECT start_date, 
    MIN(end_date) 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
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글