inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

데이터 분석을 위한 SQL 문제풀이 (Advent of SQL 2024)

Day 5. 언더스코어(_)가 포함되지 않은 데이터 찾기 (입문반 Week 1)

게임을 10개 이상 발매한 게임 배급사 찾기

해결된 질문

63

태호

작성한 질문수 11

0

WITH STAT AS(
  SELECT publisher_id, name
  FROM games
  GROUP BY publisher_id, name
  HAVING COUNT(*) >=10
)

SELECT A.name
FROM STAT AS A
JOIN companies AS B
ON A.publisher_id = B.company_id

mysql로 이렇게 작성하니까 답이 하나만 나오는데, 강사님이 작성한 코드

SELECT name
FROM(
  SELECT publisher_id, COUNT(*) AS CNT
  FROM games
  GROUP BY publisher_id
  HAVING CNT>= 10
) AS A
JOIN companies AS B
ON A.publisher_id = B.company_id

이것과 차이가 뭔지 궁금합니다

sql mysql postgresql sqlite

답변 2

1

인프런 AI 인턴

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

태호님이 작성하신 SQL 쿼리와 강사님이 작성한 쿼리의 차이에 대해 설명드리겠습니다.

태호님의 쿼리에서는 games 테이블에서 publisher_idname을 선택하고, COUNT(*) >= 10 조건으로 그룹화한 후, 결과를 STAT이라는 CTE에 저장하고 있습니다. 여기서 문제는 name을 그룹화 기준으로 포함했다는 점입니다. 게임마다 name(게임 이름)이 다를 경우, 적절한 그룹화가 이루어지지 않아 예상과 다른 결과가 나타날 수 있습니다.

강사님이 작성한 쿼리에서는 publisher_id와 그에 따른 게임 개수만을 기준으로 그룹화하였습니다. 그런 다음 결과를 사용하는 서브쿼리 내에서 COUNT(*)(별칭 CNT)를 체크하고, 조건에 맞는 publisher_idcompanies 테이블과 조인하여 적절한 결과를 내고 있습니다.

결론적으로, 두 쿼리의 차이는 태호님 쿼리에 추가된 name 필드로 인해 그룹의 기준이 달라져 있던 것입니다. 강사님의 방식대로 publisher_id 만을 기준으로 그룹화하게 되면 필요한 것을 정확하게 추출할 수 있습니다.

강사님의 쿼리가 다음과 같은 이유로 올바르게 동작합니다:
https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#query-by-example.introduction

더 도움이 필요하신 경우, 언제든지 질문 남겨주세요.

0

지식공유자 J

아래 AI 인턴의 답변대로 STAT CTE 안에서 GROUP BY publish_id, name 이렇게 두 컬럼으로 그룹핑을 한 부분이, 정답 쿼리의 GROUP BY publish_id 와 상이합니다.

스프링부트 서버 에러나요

0

9

1

코드를 첨부해야하는 이유가 있나요?

0

15

2

간단한 오타 제보입니다.

0

15

1

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

33

2

실제 FK제약조건을 설정하지 않는이유

0

30

2

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

24

2

Free Edition 실습 영상은 아직 업데이트전인가요?

0

21

1

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

33

2

상품 정보 크롤링

0

28

2

JPA Repository 질문이 있습니다!

1

33

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

36

1

강의에 적용한 스크립트를 받아 볼수 있을까요?

0

40

2

실습소실행안되요

0

35

1

평균값 구하기

0

54

2

[Day23] 정답 데이터와 동일함에도 오답 처리됩니다.

0

82

3

DAY8 질문

0

49

2

펭귄조사

0

97

2

DAY9 질문

0

111

2

코테 합격 전략

0

140

1

SQL (입문, 실전, 마스터) 빨리 듣는 방법

0

175

1

SQL 치트 시트 (실전)(마스터) 도 추가 요청합니다~

0

124

2

Day 6 질문

0

112

2

Day4. COUNT(*) 만해도 충분한 이유

0

127

1

테스트 케이스를 통과하지 못했습니다.

0

152

1