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

레스님의 프로필 이미지

작성한 질문수

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

총 정리 문제 풀이 1~3번

섹션 8 문제 풀이 1번 질문 있습니다!

해결된 질문

24.08.26 15:22 작성

·

23

0

안녕하세요 카일님, 질문이 있습니다!

trainer_pokemon 테이블에서 '트레이너가 보유한 포켓몬의 수'를 구하실 때

'포켓몬 수'를 COUNT(pokemon_id)가 아닌, COUNT(id)를 사용한 이유를 구체적으로 알 수 있을까요..?

아직 각 테이블 내에 있는 id에 대한 개념이 잘 안 잡혀서 질문 드립니다 ㅠ..

 

답변 1

0

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

2024. 08. 26. 16:20

레스님 안녕하세요!

트레이너가 보유한 포켓몬의 수를 알기 위해 id를 사용했어요. COUNT(pokemon_id)로 해도 동일한 결과가 나옥니 합니다.

그런데도 왜 id를 사용했냐면, trainer_pokemon 테이블이 "보유한" 포켓몬이기 때문이에요. pokemon 테이블은 포켓몬들의 메타 정보입니다. 그래서 pokemon_id를 COUNT하면 중복이 존재할거에요. 예를 들어 피카츄를 잡은 사람들이 많다면 피카츄 id인 25가 많이 있겠지요. 우리가 원하는 것은 "보유한" 포켓몬의 수기 때문에 trainer_pokemon을 사용했어요.

trainer_pokemon : 트레이너가 보유한 포켓몬을 알려주는 테이블 하나의 Row = 한 트레이너가 보유한 포켓몬의 수

 

정리하면

  • 지금 문제에선 COUNT(pokemon_id)를 해도 동일한 결과가 나올 것

    • 다만 pokemon_id엔 중복이 존재할 것(여러 포켓몬이 잡힐 수 있기 때문)

  • 문제에서 원하는 것은 "포켓몬"이 아닌 "트레이너가 보유한 포켓몬"이기 때문에 이걸 나타내는 trainer_pokemon의 id를 선정했어요

 

궁금한 것이 있으면 또 남겨주셔요~!

레스님의 프로필 이미지
레스
질문자

2024. 08. 26. 17:10

아하.. 감사합니다!

 

덕분에 SQL 공부 잘 하고 있습니다. 좋은 강의 개설해 주셔서 감사합니다~

레스님의 프로필 이미지

작성한 질문수

질문하기