5-6 1번 문제 풀이법
안녕하세요 카일스쿨님!
5-1번 문제를 아래와 같이 SQL을 작성해 풀어보았는데요.
답이 나오질 않았습니다.
혹시 해당 쿼리에 어떤 문제가 있어 답이 나오지 않았을지 여쭤봅니다.

감사합니다!
답변 1
0
5님 안녕하세요.
현재 쿼리가 실행이 되실지 궁금하네요. 쿼리가 아예 실행이 안된다면 오류 메시지를 알려주시는게 어떤 가이드를 드리는데 도움이 되어요.
(직접 쿼리를 작성하고 오류를 확인해보니) No matching signature for operator OR for argument types: BOOL, STRING. Supported signature: BOOL OR ([BOOL, ...]) at [3:10]라는 오류가 발생하네요. 이 오류는 OR 조건을 설정할 때 타입이 달라서 발생하는 오류입니다. 앞엔 Bool, 뒤에는 STRING이란 의미지요.
COUNTIF에서 A.status를 해주셨는데, 다음과 같이 작성해주셔야 합니다
COUNTIF(A.status = "Active" OR A.status = "Training") AS pokemon_cnt
그 이유는 SQL에서 비교 연산자(=)는 논리 연산자(OR)보다 우선 순위가 높습니다. 그래서 현재 작성해주신 것은 다음과 같이 해석이 됩니다. (A.status = "Active") OR "Training". 이 부분은 산수에서 곱셈, 더하기의 우선순위랑 비슷하게 생각하시면 됩니다.
(A.status = "Active") OR "Training" 이 부분에서 앞에 A.status="Active"는 True, False를 반환합니다. 하지만 뒤에 있는 Training은 문자열이기 때문에 직접 비교할 수 없습니다. 비교는 같은 타입끼리 가능합니다(그래서 위에 No Match 오류가 발생한 것이지요)
아마 두 문자를 연결해서 OR로 처리하려고 하셨을 것 같은데, SQL에선 이것이 동작하지 않고, 원하시는대로 하시려면 IN으로 하시거나 제가 위에서 말씀드린 것처럼 명시적으로 A.status를 두번 작성해야 합니다
COUNTIF(A.status IN ("Active", "Training"))
정리하면 아래 두 쿼리들이 실행이 될거에요
IN을 사용한 방법
SELECT
B.kor_name AS pokemon_name,
COUNTIF(A.status IN ("Active", "Training")) AS pokemon_cnt
FROM basic.trainer_pokemon AS A
LEFT JOIN basic.pokemon AS B
ON A.pokemon_id = B.id
GROUP BY
pokemon_name
A.status를 2번 명시
SELECT
B.kor_name AS pokemon_name,
COUNTIF(A.status = "Active" OR A.status = "Training") AS pokemon_cnt
FROM basic.trainer_pokemon AS A
LEFT JOIN basic.pokemon AS B
ON A.pokemon_id = B.id
GROUP BY
pokemon_name
이해가 안되시거나 다른 오류가 발생한다면 말씀해주셔요.
vs code
0
51
2
수업자료 다운
0
49
2
쿼리 화면 문의
0
72
2
4-5. 3번 문제 질
0
66
2
JOIN 1번 문제
1
76
2
battle 테이블 생성 시 생성 오류
0
69
1
5-6. 4번 문제 WHERE 조건의 위치 문의
0
65
2
5-6. 연습문제 4번, type2에 대해서는 고려하지 않아도 될까요?
1
71
2
battle table 오류
0
69
2
location IS NOT NULL 을 굳이 안 써도 되지 않나요?
0
62
2
12강 집계 함수
0
49
1
2-6. 연습 문제 1~3번
0
50
1
안녕하세요! 11번 문제 query문에 관해 질문드립니다
0
51
1
2-6 #2 WHERE vs. HAVING절 사용 여부 차이
0
67
1
섹션 별 퀴즈
0
67
1
espanso 설치 완료 후 프로그램 실행 문제
0
104
2
Syntax에러
0
83
2
4-5. 1번 문제 TIMESTAMP 관련 질문
0
89
2
시각화 도구 사용
0
110
2
11번 문제 GROUP BY 사용하는 이유
0
99
1
big query 쿼리 결과 컬럼 폭
0
108
3
battle 스키마 조건 복사 파일이 열리지 않아요.
0
130
1
6-5 데이터 검증 결과 예시문제
0
79
2
battle 스키마 조건 복사붙여넣기용 자료
0
115
2





