반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 인덱스
- 자료구조
- HackerRank
- storage_integration
- Index
- 백트래킹
- Oracle
- 쿼리
- 데이터분석
- DB
- 개발
- 인덱스튜닝
- dfs
- 조인
- 데이터베이스
- 오라클
- 문제풀이
- AWS
- Join
- 코딩
- sql
- 결합인덱스조건
- 백준
- S3
- dbeaber
- 율코딩
- 결합인덱스란
- MySQL
- 알고리즘
- snowflake
Archives
- Today
- Total
율코딩
[MySQL/HackerRank] SQL Project Planning 문제 풀이 본문
반응형
https://www.hackerrank.com/challenges/sql-projects/problem
이번 문제는 문제 자체가 어렵다기 보다는 접근 방식이 어려웠다. 나는 결국 풀지 못하고 Discussion을 보고 이해하였는데, 굉장히 단순하면서도 색다르게 느껴졌다.
- Start_Date 중 End_Date에는 없는 Start_Date는 각 연속적이지 않으므로, 처음 시작하는 프로젝트의 시작 날자를 의미한다.
- End_Date 중 Start_Date에는 없는 End_Date는 각 연속적이지 않으므로, 프로젝트의 종료날짜를 의미한다.
정답쿼리
select start_date, MIN(end_date)
from (select start_date
from projects
where start_date NOT IN (select end_date from projects)
) a, #end_date에 존재하지 않는 시작날짜
(select end_date
from projects
where end_date NOT IN (select start_date from projects)
) b #start_date에 존재하지 않는 종료날짜
where start_date < end_date
group by start_date
order by DATEDIFF(MIN(end_date),start_date), start_date
서브쿼리로 합친 a,b 테이블에서 서로 join한 것으로 나오는데 start_date 보다 end_date가 더 뒤에 있는 데이터들만 가져온다.
또한, group by 로 start_date를 묶고 가장 작은 end_date값만 가져온다. (중복 데이터를 제거하기 위해)
그리고 문제에 요구사항대로 종료날짜와 시작날짜의 차이가 작은것순으로 정렬한다.
새로운 접근법으로 풀어야하는 문제에는 아직 미숙하다... 꾸준히 풀어보고 익히는 수밖에...! 화이팅하자.
반응형
'SQL > HackerRank' 카테고리의 다른 글
[MySQL/HackerRank] Placements 문제풀이 (0) | 2022.05.22 |
---|---|
[MySQL/HackerRank] Contest Leaderboard 문제 풀이 (0) | 2022.05.22 |
[MySQL/HackerRank] Challenges 문제 풀이 (0) | 2022.05.22 |
[MySQL/HackerRank] Top Competitors 문제풀이 (0) | 2022.05.22 |
[MySQL/HackerRank] Ollivander's Inventory 문제풀이 (0) | 2022.05.22 |
Comments