연습문제 37번 관련
169
작성자 없음
0 asked
37번 문제 관련 질문이 있습니다.
저는 LEFT JOIN 에서 TIMESTAMPDIFF 말고 BETWEEN '2006-01-15' AND '2006-02-14' 을 활용했는데요, 두 개의 답이 다르게 나와서 어떤 것이 정확한 방법인지 헷갈려서 문의드립니다.
제가 문제를 잘못 이해한 것일까요?
Answer 2
0
안녕하세요. 답변 도우미입니다.
연습문제 37번에서 두 가지 접근 방식에 대해 결과가 다르게 나오는 이유는 TIMESTAMPDIFF와 BETWEEN을 사용하는 방식의 차이점에 있습니다. 두 방법이 모두 논리적으로 타당할 수 있지만, 문제에서 원하는 조건을 더 정확하게 반영하는 방법은 BETWEEN을 사용하는 방식입니다. 그 이유는 다음과 같습니다.
### 1. TIMESTAMPDIFF 방식
```sql
LEFT JOIN rental r ON c.customer_id = r.customer_id
AND TIMESTAMPDIFF(DAY, r.rental_date, '2006-02-14') <= 30
```
이 방식은 r.rental_date와 기준 날짜인 2006-02-14 사이의 날짜 차이를 30일 이내로 제한하는 방식입니다. 즉, 2006-02-14 기준으로 과거 30일 이내에 대여된 기록을 찾아내는 방식이 됩니다. 이 방법은 날짜의 차이를 기준으로 처리하기 때문에 30일이라는 기간을 계산할 때 정확하게 30일을 넘지 않는 대여 기록을 찾아냅니다.
### 2. BETWEEN 방식
```sql
LEFT JOIN rental r ON c.customer_id = r.customer_id
AND r.rental_date BETWEEN '2006-01-15' AND '2006-02-14'
```
이 방식은 날짜 범위를 직접 명시하는 방식입니다. 즉, 대여 날짜(`r.rental_date`)가 2006-01-15부터 2006-02-14까지의 기간에 속하는지 여부를 확인합니다. 문제에서 말하는 "이전 30일"이 정확히 이 범위에 해당하므로, 문제 의도를 더 명확하게 반영한 방법입니다.
### 차이점 분석:
- `TIMESTAMPDIFF` 방식은 "30일 이내"라는 조건을 사용하기 때문에, 기준 날짜(`2006-02-14`)로부터 정확히 30일을 계산합니다. 하지만, 이 방식은 정확한 날짜 범위(`2006-01-15`부터 2006-02-14)를 반영하지 못할 수 있고, 달력 날짜 계산이 아닌, 날짜 차이를 기반으로 하기 때문에 문제가 될 수 있습니다.
- `BETWEEN` 방식은 문제에서 요구하는 2006-01-15부터 2006-02-14까지라는 정확한 날짜 범위를 지정합니다. 따라서 문제에서 요구한 "이전 30일"이라는 조건을 직접적으로 반영하고 있기 때문에, 더 정확한 방식입니다.
### 결론:
둘다 큰 차이는 아니지만, `BETWEEN` 방식이 더 정확한 방법이라고 볼 수도 있습니다. 문제에서 명시한 날짜 범위가 "2006-01-15일부터 2006-02-14일까지"이므로, 이 범위 내에서 영화를 대여하지 않은 고객을 찾는 것이 올바른 해석입니다.
감사합니다.
잔재미코딩 드림
0
안녕하세요, 인프런 AI 인턴입니다. 둥절둥절님.
연습문제 37번에 대해 문의주신 점에 대해 답변드리겠습니다.
두 가지 방법 모두 올바른 SQL 구문이지만, 사용된 조건과 상황에 따라 결과가 다를 수 있습니다. TIMESTAMPDIFF와 BETWEEN 연산자는 각각 특정 상황에서 더 적합할 수 있습니다.
TIMESTAMPDIFF:
- 장점: 특정 기간(예: 일, 월, 년 등)을 비교할 때 유용합니다.
- 용례: 블로그 포스트 도입까지 TIMESTAMPDIFF를 활용한 예제에 대해 자세히 설명합니다.
- 장점: 특정 기간(예: 일, 월, 년 등)을 비교할 때 유용합니다.
BETWEEN:
- 장점: 특정 날짜 범위 내 데이터를 필터할 때 직관적입니다.
- 용례: 배포된 자료나 수업 자료에서 BETWEEN으로 해결한 사례를 다룹니다.
- 장점: 특정 날짜 범위 내 데이터를 필터할 때 직관적입니다.
기본적으로, 문제의 요구 사항에 따라 적절한 방법을 선택해야 합니다.
관련 답변 URL
INNER JOIN과 LEFT JOIN의 차이와 사용해야 하는 상황
추가 설명
위 링크에서는 INNER JOIN과 LEFT JOIN에 대한 상세한 설명과 사용 사례를 다루고 있습니다. JOIN 연산의 이해를 돕기 위해 꼭 참고하시길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
패키지 구분에 대해 궁금한게 있습니다
0
7
1
노션 링크도 안 열리고, 알려준 vercel도 실행이 안됩니다.
0
10
1
Substack 1년 제공
1
21
3
특별 학습 자료 프로모션 1년 멤버십 무료 제공 문의드립니다
0
27
2
스프링부트 서버 에러나요
0
17
1
코드를 첨부해야하는 이유가 있나요?
0
20
2
간단한 오타 제보입니다.
0
19
1
큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.
0
34
2
실제 FK제약조건을 설정하지 않는이유
0
35
2
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
28
2
Sequence 관련 질문
1
32
2
Image Only Query
1
29
2
Free Edition 실습 영상은 아직 업데이트전인가요?
0
22
1
라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항
0
36
2
where 컬럼에 함수를 적용하는건 좋지 못하다고 들었습니다.
0
78
1
중고급 SQL과 실전 데이터 분석 101 문제 풀이, 13강 EXTRACT
0
84
1
28번 문제 답에대해서 질문드립니다.
0
98
1
중급 연습문제 25번
0
136
1
mysql 워크 벤치 커뮤니티 설치 중 에러
0
131
1
skill
0
207
3
sakila데이터베이스 다운했는데 값이 전부 null
0
176
1
연습문제 4번 관련
1
142
2
연습문제 28번 관련
0
161
3
강의 내 연습문제 유형 관련
0
176
2

