inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bài tập SQL cho phân tích dữ liệu (Advent of SQL 2024)

Ngày 5. Tìm dữ liệu không chứa dấu gạch dưới (_) (Lớp nhập môn Tuần 1)

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

Đã giải quyết

63

xogh45675010

11 câu hỏi đã được viết

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

Câu trả lời 2

1

communityai8509

안녕하세요, 인프런 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

jaemin

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

FOREIGN KEY 정리하기, 영상대로 SQL코드 복붙해도 안되요.

0

3

1

모델 서빙과 관련된 강좌 출시 예정된 바가 있으신지 여쭤봅니다!

0

6

1

Vercel 실행이 안됩니다

0

4

1

패키지 구분에 대해 궁금한게 있습니다

0

13

1

노션 링크도 안 열리고, 알려준 vercel도 실행이 안됩니다.

0

15

1

스프링부트 서버 에러나요

0

17

1

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

0

22

2

간단한 오타 제보입니다.

0

19

1

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

0

35

2

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

0

38

2

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

0

29

2

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

0

22

1

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

0

36

2

평균값 구하기

0

54

2

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

0

83

3

DAY8 질문

0

49

2

펭귄조사

0

97

2

DAY9 질문

0

111

2

코테 합격 전략

0

141

1

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

0

176

1

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

0

124

2

Day 6 질문

0

112

2

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

0

127

1

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

0

153

1