게임을 10개 이상 발매한 게임 배급사 찾기
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_idmysql로 이렇게 작성하니까 답이 하나만 나오는데, 강사님이 작성한 코드
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이것과 차이가 뭔지 궁금합니다
답변 2
1
안녕하세요, 인프런 AI 인턴입니다.
태호님이 작성하신 SQL 쿼리와 강사님이 작성한 쿼리의 차이에 대해 설명드리겠습니다.
태호님의 쿼리에서는 games 테이블에서 publisher_id와 name을 선택하고, COUNT(*) >= 10 조건으로 그룹화한 후, 결과를 STAT이라는 CTE에 저장하고 있습니다. 여기서 문제는 name을 그룹화 기준으로 포함했다는 점입니다. 게임마다 name(게임 이름)이 다를 경우, 적절한 그룹화가 이루어지지 않아 예상과 다른 결과가 나타날 수 있습니다.
강사님이 작성한 쿼리에서는 publisher_id와 그에 따른 게임 개수만을 기준으로 그룹화하였습니다. 그런 다음 결과를 사용하는 서브쿼리 내에서 COUNT(*)(별칭 CNT)를 체크하고, 조건에 맞는 publisher_id를 companies 테이블과 조인하여 적절한 결과를 내고 있습니다.
결론적으로, 두 쿼리의 차이는 태호님 쿼리에 추가된 name 필드로 인해 그룹의 기준이 달라져 있던 것입니다. 강사님의 방식대로 publisher_id 만을 기준으로 그룹화하게 되면 필요한 것을 정확하게 추출할 수 있습니다.
강사님의 쿼리가 다음과 같은 이유로 올바르게 동작합니다:
https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#query-by-example.introduction
더 도움이 필요하신 경우, 언제든지 질문 남겨주세요.
0
아래 AI 인턴의 답변대로 STAT CTE 안에서 GROUP BY publish_id, name 이렇게 두 컬럼으로 그룹핑을 한 부분이, 정답 쿼리의 GROUP BY publish_id 와 상이합니다.
1번 문제 질문
0
11
2
3-13 리텐션 과제 제출합니다
0
14
2
부하 테스트 시 설정 관련 질문드립니다
1
30
1
build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)
0
35
2
실습 데이터(PostgreSQL 백업 파일) 관련하여 문의드립니다. (Hive 환경 실습)
0
27
2
sakila 실전 17번 문제
0
23
1
복합인덱스 설계 질문
0
55
1
app logs 데이터로 쿼리 연습
0
39
2
ArticleReadService 관련 질문
0
30
1
마스터패스...
0
43
1
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
71
1
[과제] 연습문제 쿼리 작성했습니다!
0
31
2
62번 영상 화면의 글씨가 또렷하지 않아요
0
38
2
평균값 구하기
0
98
2
[Day23] 정답 데이터와 동일함에도 오답 처리됩니다.
0
142
3
DAY8 질문
0
93
2
펭귄조사
0
140
2
DAY9 질문
0
146
2
코테 합격 전략
0
173
1
SQL (입문, 실전, 마스터) 빨리 듣는 방법
0
197
1
SQL 치트 시트 (실전)(마스터) 도 추가 요청합니다~
0
149
2
Day 6 질문
0
143
2
Day4. COUNT(*) 만해도 충분한 이유
0
152
1
테스트 케이스를 통과하지 못했습니다.
0
176
1





