[BigQuery] 조건문 CASE WHEN / IF (그런데 기억할 게 있음)

y1nlog·2025년 1월 20일
post-thumbnail

흔하디 흔한 조건문이지만, 기억할 내용은 남겨둘 겸 짧게 남겨보는 오늘의 빅쿼리 기초.

CASE WHEN

기본 구조

복수 개의 조건이 있을 경우, 사용할 수 있다.

SELECT
	CASE
    WHEN 조건 1 THEN 결과
    WHEN 조건 2 THEN 결과
	END AS 새로운_컬럼명
FROM --
WHERE --

CASE WHEN과 관련하여 예제를 들어보자.

문제 : 각 포켓몬의 공격력(attack)을 기준으로,
50 이상이면 'Strong', 100 이상이면 'Very Strong', 그 이하면 'Weak'로 분류해 주세요.

문제의 요구사항은 간단하게 50 미만, 50이상, 100이상 총 3개의 카테고리로 분류할 수 있다.

익숙한 if 문으로 생각해서 수도 코드를 짜 보면

이렇게 구조화 할 수 있겠다.

그런데 문제는

조건 적용하는 순서만 바꿔도 이게 정상적인 값을 반환하지 않는다는 것.
수도코드가 JS틱한 것은 넘어가세요..

그래서 강의화면 캡쳐해옴.
실행 결과 화면만 보더라도, 우측에 순서를 뒤바꾼 코드는 attack이 134의 값을 가져도 Strong이라고 반환된 것을 볼 수 있음.

CASE WHEN 사용 시,
앞서 나온 조건1에 부합한다면 rows를 돌던 조건함수가 해당 row는 조건1의 결과값을 할당해 버리기 때문에, 아무리 조건2가 나오더라도 그 조건문은 PASS해버리는 일이 발생한다.

따라서,
조건이 중첩되는 경우가 발생되지 않도록, CASE WHEN의 사용 로직을 점검할 필요가 있다.

IF

조건문? 하면 if부터 떠오르게 되는 IF문 역시 빅쿼리에서도 지원한다.

이 친구는 단일 조건일 경우 유용하게 사용 가능.

기본 구조

SELECT
	IF(condition, result when true, result when false) AS new_col
FROM ---
WHERE ---

예시 코드

SELECT
	IF(1=1, 'SAME', 'DIFFER') AS RESULT1,
    IF(1=2, 'SAME', 'DIFFER') AS RESULT2

이렇게 SELECT구에서 사용 가능하다.
그럼 오SQL완? 🐹.. 해도 되나요?

profile
FE / Data Science

0개의 댓글