2-6.연습문제 17번
안녕하세요. 열혈 수강자 이지수입니다 : )
문제가 하나씩 풀리니 넘 재밌고 뿌듯합니다 ㅎㅎ
17번 문제에서
풀어준 포켓몬 수를 B
전체 포켓몬 수를 A로 두었는데요
COUNT IF B/A 이런식으로 축약해서 연산할 수는 없나요?
감사합니다.
SELECT trainer_id,
COUNTIF(status="Released") as B , #풀어준 포켓몬의 수
COUNT(pokemon_id) as A, #전체 포켓몬의 수
COUNTIF(status="Released")/COUNT(pokemon_id) as released_ratio
FROM basic.trainer_pokemon
GROUP BY trainer_id
HAVING released_ratio >=0.2
답변 1
0
안녕하세요. 열혈 수강자라니 기쁘네요! 계속 강의 잘 수강해보셔요!
질문이 약간 헷갈리는데 제가 이해한게 맞을까요?
SELECT
trainer_id,
COUNTIF(status="Released") as B , #풀어준 포켓몬의 수
COUNT(pokemon_id) as A, #전체 포켓몬의 수
B/A as released_ratio
FROM basic.trainer_pokemon
GROUP BY trainer_id
HAVING released_ratio >=0.2이렇게 실행하고 싶다는 의미일까요?
"COUNT IF B/A 이런식으로" 라는 표현이 구체적이지 않아서 헷갈리네요
실행을 해보시면, 실행이 안될거에요. 쿼리는 SELECT문이 마지막에 실행되는데, 실행하는 시점에 A와 B가 무엇인지 모릅니다. 그래서 서브쿼리로 감싸서 실행을 해야합니다. SELECT의 별칭은 그 안에 있는 쿼리에선 사용할 수 없습니다
SQL 실행 순서 : FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
SELECT에서 사용한 별칭은 ORDER BY에서만 사용이 가능하고, 그 외에 사용하고 싶다면 아래처럼 서브쿼리로 감싸서 실행해야 합니다.
SELECT
trainer_id,
B/A as released_ratio
FROM (
SELECT
trainer_id,
COUNTIF(status="Released") as B , #풀어준 포켓몬의 수
COUNT(pokemon_id) as A, #전체 포켓몬의 수
FROM basic.trainer_pokemon
)
GROUP BY trainer_id
HAVING released_ratio >=0.2
이렇게는 실행이 됩니다.
3번 문제 질문!
0
36
2
1-2 battle 테이블 설정 질문 있습니다.
0
32
1
12강 집계 함수 8번 연습문제 질문
0
39
1
6-5 질문 있습니다!
0
54
3
vs code
0
89
2
수업자료 다운
0
104
2
쿼리 화면 문의
0
111
2
4-5. 3번 문제 질
0
106
2
JOIN 1번 문제
1
107
2
battle 테이블 생성 시 생성 오류
0
102
1
5-6. 4번 문제 WHERE 조건의 위치 문의
0
83
2
5-6. 연습문제 4번, type2에 대해서는 고려하지 않아도 될까요?
1
95
2
battle table 오류
0
111
2
location IS NOT NULL 을 굳이 안 써도 되지 않나요?
0
85
2
12강 집계 함수
0
71
1
2-6. 연습 문제 1~3번
0
69
1
안녕하세요! 11번 문제 query문에 관해 질문드립니다
0
74
1
2-6 #2 WHERE vs. HAVING절 사용 여부 차이
0
88
1
섹션 별 퀴즈
0
88
1
espanso 설치 완료 후 프로그램 실행 문제
0
150
2
Syntax에러
0
119
2
4-5. 1번 문제 TIMESTAMP 관련 질문
0
118
2
시각화 도구 사용
0
137
2
11번 문제 GROUP BY 사용하는 이유
0
121
1





