반응형
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 |
Tags
- Oracle
- 인덱스
- sql
- 데이터베이스
- dbeaber
- storage_integration
- Index
- 데이터분석
- 문제풀이
- 개발
- 백트래킹
- 인덱스튜닝
- snowflake
- 결합인덱스조건
- 코딩
- Join
- 백준
- HackerRank
- 율코딩
- 알고리즘
- 오라클
- MySQL
- 결합인덱스란
- S3
- AWS
- 쿼리
- dfs
- 자료구조
- 조인
- DB
Archives
- Today
- Total
율코딩
[MySQL/HackerRank] SQL Project Planning 문제 풀이 본문
반응형
https://www.hackerrank.com/challenges/sql-projects/problem
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
이번 문제는 문제 자체가 어렵다기 보다는 접근 방식이 어려웠다. 나는 결국 풀지 못하고 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