SQL CASE WHEN + LIKE 정리 | 리뷰 데이터에서 키워드 언급 수 세기

리뷰 데이터에서 특정 키워드가 얼마나 자주 언급되는지 확인하고 싶다면, SQL에서는 LIKE와 CASE WHEN을 함께 쓰는 방식이 가장 단순하고 실용적이다. LIKE '%keyword%'로 특정 단어 포함 여부를 확인하고, CASE WHEN ... THEN 1 ELSE 0 END로 이를 숫자로 바꾼 뒤, SUM()으로 합치면 키워드 언급 수를 바로 집계할 수 있다.

이 패턴은 리뷰 분석, VOC 분류, 상품 피드백 요약처럼 텍스트가 섞인 데이터에서 자주 쓰인다. 특히 NLP까지 가지 않고도 “사이즈 언급 수”, “large/small 언급 비율”, “카테고리별 불만 키워드” 정도는 SQL만으로 빠르게 볼 수 있어서 EDA 단계에서 꽤 유용하다.

이 패턴이 자주 쓰이는 이유

리뷰 데이터는 길게 읽어야 의미가 보이는 것 같지만, 실제 분석 초반에는 특정 단어가 얼마나 자주 등장하는지만 봐도 방향이 잡히는 경우가 많다. 예를 들어 의류 리뷰라면 아래 같은 질문이 바로 나온다.

  • 사람들이 size를 얼마나 자주 언급하는가
  • large, small 중 어떤 표현이 더 많이 나오는가
  • 특정 카테고리에서 사이즈 불만이 더 많이 보이는가
  • 평점이 낮은 리뷰에서 특정 키워드가 집중되는가

이때 필요한 건 문장 전체 해석이 아니라, 조건을 만족하는 행을 세는 방식이다. 그래서 LIKE + CASE WHEN + SUM 조합이 자주 쓰인다.

핵심 원리 먼저 보면 이렇게 동작한다

이 패턴은 사실 세 단계로 끝난다.

1) LIKE로 포함 여부 확인

`Review Text` LIKE '%size%'

이 조건은 리뷰 본문에 size라는 문자열이 포함돼 있으면 참이 된다.

2) CASE WHEN으로 1 또는 0으로 바꾸기

CASE
    WHEN `Review Text` LIKE '%size%' THEN 1
    ELSE 0
END

이제 “언급했다 / 안 했다”를 숫자로 바꾼 셈이다.

3) SUM()으로 전체 개수 합산

SUM(
    CASE
        WHEN `Review Text` LIKE '%size%' THEN 1
        ELSE 0
    END
)

각 행마다 1 또는 0이 만들어졌으니, 전부 더하면 결국 키워드가 언급된 리뷰 수가 된다.

즉 이 패턴은 한 문장으로 정리하면 이렇다.

문자열 포함 여부를 조건으로 바꾸고, 그 조건을 숫자로 바꾼 뒤, 전체 합을 구하는 방식

가장 기본적인 형태

리뷰 전체에서 특정 키워드 언급 수를 세는 가장 기본적인 쿼리는 아래처럼 쓴다.

SELECT
    COUNT(1) AS TotalReview,
    SUM(CASE WHEN `Review Text` LIKE '%size%' THEN 1 ELSE 0 END) AS SizeCount
FROM dataset2;

이 쿼리에서 보는 포인트는 두 가지다.

  • COUNT(1)은 전체 리뷰 수
  • SUM(CASE WHEN ...)은 size가 들어간 리뷰 수

즉 “전체 중 몇 개가 해당 키워드를 언급했는지”를 한 번에 볼 수 있다.

이 방식은 size뿐 아니라 refund, 배송, quality, fit, small, large처럼 원하는 키워드로 바로 바꿔서 쓸 수 있다.

여러 키워드를 동시에 세는 방법

실무에서는 보통 키워드를 하나만 보지 않는다.

예를 들어 의류 리뷰라면 size, large, small을 같이 보는 게 더 유용하다.

SELECT
    COUNT(1) AS TotalReview,
    SUM(CASE WHEN `Review Text` LIKE '%size%' THEN 1 ELSE 0 END) AS SizeCount,
    SUM(CASE WHEN `Review Text` LIKE '%large%' THEN 1 ELSE 0 END) AS LargeCount,
    SUM(CASE WHEN `Review Text` LIKE '%small%' THEN 1 ELSE 0 END) AS SmallCount
FROM dataset2;

이 쿼리는 한 번의 집계로 여러 키워드 언급 수를 동시에 뽑는다.

즉 “사이즈 언급 자체가 많은지”, “큰 편이라는 말이 많은지”, “작다는 말이 많은지”를 빠르게 비교할 수 있다.

이 패턴이 좋은 이유는 구조가 단순해서 키워드를 늘리기 쉽다는 점이다.

필요한 단어가 늘어나면 SUM(CASE WHEN ...) 컬럼을 추가하면 된다.

카테고리별로 보면 더 쓸모 있어진다

전체 집계만 보면 키워드가 많이 나온다는 사실까지만 알 수 있다.

실제로 어디에서 많이 나오는지 보려면 GROUP BY를 붙여서 카테고리별로 쪼개 보는 게 좋다.

SELECT
    `Department Name`,
    COUNT(1) AS TotalReview,
    SUM(CASE WHEN `Review Text` LIKE '%size%' THEN 1 ELSE 0 END) AS SizeCount,
    SUM(CASE WHEN `Review Text` LIKE '%large%' THEN 1 ELSE 0 END) AS LargeCount,
    SUM(CASE WHEN `Review Text` LIKE '%small%' THEN 1 ELSE 0 END) AS SmallCount
FROM dataset2
GROUP BY 1;

이렇게 하면 부서/카테고리별로 어떤 키워드가 많이 나오는지 확인할 수 있다.

예를 들어 어떤 카테고리에서는 small 언급이 유독 많고, 다른 카테고리에서는 large 언급이 많을 수 있다. 이 단계부터는 단순 텍스트 검색이 아니라 상품군별 불만 패턴 탐색에 가까워진다.

즉 이 패턴의 진짜 활용 포인트는 전체 집계 → 카테고리별 비교로 확장하는 데 있다.

CASE WHEN + LIKE가 유용한 상황

이 방식은 특히 아래 같은 상황에서 실용적이다.

  • 리뷰 데이터 EDA 초반
  • VOC 텍스트를 빠르게 분류하고 싶을 때
  • 특정 키워드 언급량을 대략 보고 싶을 때
  • NLP 모델을 쓰기 전에 방향만 먼저 보고 싶을 때
  • 카테고리별 이슈를 빠르게 비교하고 싶을 때

즉 정교한 텍스트 분석을 하기 전 단계에서 빠르고 싸게 볼 수 있는 1차 필터 역할을 한다.

자주 하는 실수

이 패턴은 단순해 보여도 몇 가지 실수가 자주 나온다.

1) COUNT()만으로 키워드 개수를 세려고 하는 경우

아래처럼 쓰면 키워드 개수가 아니라 전체 행 수만 세게 된다.

SELECT COUNT(1)
FROM dataset2
WHERE `Review Text` LIKE '%size%';

이 쿼리도 틀린 건 아니지만, 여러 키워드를 동시에 비교하거나 카테고리별로 묶어 볼 때는 확장성이 떨어진다. 그래서 보통은 SUM(CASE WHEN ...) 패턴이 더 많이 쓰인다.

2) 대소문자, 표현 차이를 고려하지 않는 경우

size만 찾으면 sizing, fit, too small, runs large 같은 표현은 놓칠 수 있다. 즉 키워드 선택 자체가 결과를 크게 바꾼다.

3) 단어가 들어간 문맥을 확인하지 않는 경우

small이 등장했다고 해서 모두 불만은 아니다.

예를 들어 “보통보다 작지만 만족한다”와 “너무 작아서 못 입겠다”는 완전히 다른 의미다.

즉 이 방식은 언급 여부는 잘 세지만, 맥락까지 정확히 이해하진 못한다.

4) NULL 텍스트를 고려하지 않는 경우

리뷰 본문 컬럼에 NULL이 들어 있을 수 있으면, 집계 전에 데이터 상태를 먼저 확인하는 게 좋다. 텍스트 컬럼은 결측 처리 방식에 따라 조건 결과가 달라질 수 있다.

평점이나 카테고리 조건까지 같이 걸면 더 실전적이다

키워드 집계는 보통 단독으로 끝나지 않는다.

예를 들어 “Trend 카테고리에서 평점이 낮은 리뷰만 보고 싶다”면 아래처럼 조건을 추가할 수 있다.

SELECT *
FROM dataset2
WHERE `Department Name` = 'Trend'
  AND Rating <= 3;

이렇게 조건을 먼저 좁힌 뒤, 그 범위 안에서 CASE WHEN + LIKE 집계를 걸면 더 실전적인 분석이 된다.

즉 이 패턴은 단독으로도 쓰이지만, 보통은 카테고리 / 평점 / 연령대 같은 조건과 함께 쓰일 때 더 의미가 커진다.

이 패턴을 기억하는 가장 쉬운 방식

복잡하게 외울 필요 없다. 아래 순서만 기억하면 된다.

  1. 찾고 싶은 단어를 LIKE로 잡는다
  2. CASE WHEN으로 1/0으로 바꾼다
  3. SUM()으로 전체 개수를 센다
  4. 필요하면 GROUP BY로 나눈다

즉 이건 SQL 텍스트 분석이라기보다,

조건부 집계를 문자열 조건에 적용한 패턴이라고 보면 된다.

정리

CASE WHEN + LIKE는 리뷰 데이터에서 특정 키워드 언급 수를 세는 가장 단순하고 실용적인 SQL 패턴이다. 문법 자체는 어렵지 않지만, 실제로는 전체 리뷰 수와 키워드 언급 수를 같이 보고, 필요하면 카테고리별로 나누고, 평점 조건까지 붙이는 식으로 확장해서 쓰게 된다.

물론 이 방식은 문맥을 완전히 이해하지 못한다는 한계가 있다. 하지만 EDA 초반이나 빠른 이슈 탐색 단계에서는 그 자체로 충분히 유용하다. 특히 텍스트 데이터를 SQL 단계에서 빠르게 훑고 싶은 경우라면, 이 패턴은 거의 기본 도구에 가깝다.


LIKE로 키워드 포함 여부를 확인하고, CASE WHEN으로 1/0으로 바꾼 뒤, SUM()으로 더하면 리뷰 데이터에서 특정 키워드 언급 수를 쉽게 셀 수 있다.