인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

중고급 SQL과 실전 데이터 분석 101 문제 풀이 [데이터분석/과학 Part1]

실전 데이터 분석을 위한 연습문제 풀기8

연습문제 37번 관련

작성

·

59

0

37번 문제 관련 질문이 있습니다.

저는 LEFT JOIN 에서 TIMESTAMPDIFF 말고 BETWEEN '2006-01-15' AND '2006-02-14' 을 활용했는데요, 두 개의 답이 다르게 나와서 어떤 것이 정확한 방법인지 헷갈려서 문의드립니다.

제가 문제를 잘못 이해한 것일까요?

답변 2

0

안녕하세요. 답변 도우미입니다.

연습문제 37번에서 두 가지 접근 방식에 대해 결과가 다르게 나오는 이유는 TIMESTAMPDIFFBETWEEN을 사용하는 방식의 차이점에 있습니다. 두 방법이 모두 논리적으로 타당할 수 있지만, 문제에서 원하는 조건을 더 정확하게 반영하는 방법은 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 연산자는 각각 특정 상황에서 더 적합할 수 있습니다.

  1. TIMESTAMPDIFF:

    • 장점: 특정 기간(예: 일, 월, 년 등)을 비교할 때 유용합니다.
    • 용례: 블로그 포스트 도입까지 TIMESTAMPDIFF를 활용한 예제에 대해 자세히 설명합니다.
  2. BETWEEN:

    • 장점: 특정 날짜 범위 내 데이터를 필터할 때 직관적입니다.
    • 용례: 배포된 자료나 수업 자료에서 BETWEEN으로 해결한 사례를 다룹니다.

기본적으로, 문제의 요구 사항에 따라 적절한 방법을 선택해야 합니다.

관련 답변 URL

INNER JOIN과 LEFT JOIN의 차이와 사용해야 하는 상황

추가 설명

위 링크에서는 INNER JOIN과 LEFT JOIN에 대한 상세한 설명과 사용 사례를 다루고 있습니다. JOIN 연산의 이해를 돕기 위해 꼭 참고하시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기