총 정리 문제 풀이 2번 문제 추가 질문
카일님 안녕하세요. 강의 아주 잘 듣고 있습니다 감사합니다 :)
총 정리 문제 2번에서 추가 질문 드립니다.
제가 처음 풀때 문제를 잘못이해하여, type1 별 가장 많이 포획된 포켓몬 이름과 횟수를 각 type1 TOP 1 들을 구하려고 했습니다. MAX (COUNT) 라는 말도 안되는 쿼리를 작성하면서 고군분투 하였고, 결국 못 풀었습니다.
다행히 채점할때 카일님이 의도하신 출제방향으로는 답이 나와있는 상태여서 이해는 하였습니다 만. !
커머스라고 가정할 때 각 카테고리별(type1) , 가장 많이 팔린 제품(kor_name), 최다 판매수(cnt) 를 구해야 한다면, 제가 풀지못했던 문제로 해결할 수 있을 것 같아서요.
type1 별로 포획량 TOP 1을 구하는 쿼리는 어떻게 작성하면 좋을 까요?
답변 2
1
안녕하세요. 문제 열심히 풀고 계시는군요..! 잘하고 계시네요
말씀하신 결과를 얻고 싶다면, 윈도우 함수를 쓰는 것이 제일 빠릅니다. 윈도우 함수는 기본편에선 다루진 않고 BigQuery 활용편 에서 다룹니다. 윈도우 함수가 처음에 좀 어려운 부분이 있어서 활용편으로 빼두었어요.
말씀하신 MAX를 사용하는 방식으로 풀 수는 있긴 합니다. 다만 여러번 돌아가는 느낌이 들긴 하죠
WITH type_pokemon_counts AS (
SELECT
p.type1,
p.kor_name,
COUNT(tp.id) as cnt
FROM basic.trainer_pokemon AS tp
INNER JOIN basic.pokemon AS p
ON tp.pokemon_id = p.id
GROUP BY p.type1, p.kor_name
), type_max_counts AS (
SELECT
type1,
MAX(cnt) AS max_cnt
FROM type_pokemon_counts
GROUP BY type1
)
SELECT
tpc.type1,
tpc.kor_name,
tpc.cnt
FROM type_pokemon_counts AS tpc
JOIN type_max_counts AS tmc
ON tpc.type1 = tmc.type1
AND tpc.cnt = tmc.max_cnt
ORDER BY tpc.cnt DESC
윈도우 함수를 사용한다면 아래 쿼리로 사용할 수 있습니다(문법은 모르실거라 그냥 이런 것이 있구나 정도로 생각하시고 활용편을 듣는 것을 추천드려요) : 더 직관적이고 쿼리가 짧아집니다
WITH ranked_pokemons AS (
SELECT
p.type1,
p.kor_name,
COUNT(tp.id) AS cnt,
ROW_NUMBER() OVER (PARTITION BY p.type1 ORDER BY COUNT(tp.id) DESC) AS rn
FROM basic.trainer_pokemon AS tp
JOIN basic.pokemon AS p ON tp.pokemon_id = p.id
GROUP BY p.type1, p.kor_name
)
SELECT
type1,
kor_name,
cnt
FROM ranked_pokemons
WHERE rn = 1
ORDER BY cnt DESC;
1번 문제 질문
0
8
1
3번 문제 질문!
0
41
2
1-2 battle 테이블 설정 질문 있습니다.
0
34
1
12강 집계 함수 8번 연습문제 질문
0
41
1
6-5 질문 있습니다!
0
57
3
vs code
0
93
2
수업자료 다운
0
110
2
쿼리 화면 문의
0
114
2
4-5. 3번 문제 질
0
108
2
JOIN 1번 문제
1
114
2
battle 테이블 생성 시 생성 오류
0
106
1
5-6. 4번 문제 WHERE 조건의 위치 문의
0
86
2
5-6. 연습문제 4번, type2에 대해서는 고려하지 않아도 될까요?
1
98
2
battle table 오류
0
116
2
location IS NOT NULL 을 굳이 안 써도 되지 않나요?
0
88
2
12강 집계 함수
0
74
1
2-6. 연습 문제 1~3번
0
76
1
안녕하세요! 11번 문제 query문에 관해 질문드립니다
0
78
1
2-6 #2 WHERE vs. HAVING절 사용 여부 차이
0
92
1
섹션 별 퀴즈
0
91
1
espanso 설치 완료 후 프로그램 실행 문제
0
154
2
Syntax에러
0
124
2
4-5. 1번 문제 TIMESTAMP 관련 질문
0
122
2
시각화 도구 사용
0
141
2





