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

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

simon919님의 프로필 이미지

작성한 질문수

초보자를 위한 BigQuery(SQL) 입문

5-6. JOIN 연습 문제 3~5번

JOIN 연습문제 3번 답이 다르게 나와요ㅠㅠ

해결된 질문

작성

·

58

0

분명 선생님께서 해주신 거랑 똑같이 쿼리 입력했는데

왜 저는 28/43개가 아니라 17/18개가 나오는 걸까요...? (혹시 그새 데이터 파일이 바뀌거나 한 걸까요 😂)

image.png

 

답변 2

0

카일스쿨님의 프로필 이미지
카일스쿨
지식공유자

안녕하세요. 쿼리를 확인해보면, 제 쿼리랑 다른 부분이 있습니다(강의 자료 압축 파일에 코드도 저장되어 있어서 코드 확인해보시면 더 수월할 것 같아요)

ON쪽을 보면 tp.pokemon_id = t.id로 되어있는데, 강의에선 t.id = tp.train_id라고 했습니다. 트레이너 테이블의 id와 trainer_pokemon 테이블의 trainer_id랑 JOIN을 해야 합니다. 지금은 trainer_pokemon의 pokemon_id와 trainerd의 id를 JOIN했는데, 이상한 값이 나올 수 밖에 없지요(다른 의미의 컬럼을 JOIN했으니까)

simon919님의 프로필 이미지
simon919
질문자

아 말도 안되는 실수를 했군요 😅 짚어주셔서 감사합니다!!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

simon919님께서 언급하신 사항에 대해 고민해 보겠습니다. 우리가 다루고 있는 SQL 쿼리 문제에서 쿼리가 동일한데도 결과가 다르게 나오는 이유는 몇 가지 가능성이 있습니다. 데이터를 인식하는 방식이나 쿼리 작성의 사소한 차이, 혹은 데이터셋 자체의 업데이트 등입니다.

우선적으로 살펴볼 만한 사항은 다음과 같습니다:

  1. 데이터셋의 변경 가능성: 데이터셋이 강의 녹화 이후에 업데이트되었을 가능성도 있습니다. 이런 경우라면 같은 쿼리를 돌려도 다른 결과가 나올 수 있습니다. 데이터가 바뀌었는지 지식공유자님이나 공식적인 채널을 통해 확인해보시면 좋을 것 같습니다.

  2. 쿼리 작성 차이점: 간혹 눈에 보이지 않는 사소한 차이로 인한 결과 차이가 있을 수 있습니다. 예를 들어, 공백이나 불필요한 구문 등이 그 원인이 될 수 있습니다. 쿼리를 다시 한번 꼼꼼히 확인해 보시는 것을 권장드립니다.

  3. JOIN 연산의 본질적인 이해: LEFT JOIN을 통해 기본적으로 연결되는 데이터를 모두 가져오고, 매칭되지 않는 데이터는 NULL로 반환할 수 있습니다. JOIN의 조건이나 WHERE 절에서의 필터링 문제가 있다면 원하는 결과를 얻지 못할 수 있습니다.

추천드리는 해결책:

  • 강의에서 제공되는 쿼리를 그대로 사용 중이라면 가급적 GitHub 등에서 소스코드를 다시 가져와 비교해 보시기를 추천드립니다.
  • 데이터를 처음부터 다시 로딩할 수 있다면, 초기 데이터셋을 사용하여 쿼리를 다시 한번 실행해 보시기 바랍니다.

관련된 유사 사례는, SQL 연산 관련 이전 질문과 답변에서 확인하실 수 있습니다. 이 링크에서는 JOIN 연산 시의 문제를 다루고 있습니다.

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

simon919님의 프로필 이미지

작성한 질문수

질문하기