본문 바로가기

Wiki/SQL

SELECT절에서 조건에 맞는 유니크한 값 구하기(COUNT, IF, DISTINCT)

문제

  • SELECT절에서 조건에 맞는 유니크한 값을 구하려고 한다.
  • 즉, COUNT와 IF와 DISTINCT를 같이 쓰고 싶다.
  • 예를 들어 가격(price)이 100을 초과하는 유니크한 item_id들을 가져오려고 한다.

시도한 방법

처음 시도한 방법은 아래와 같다.

SELECT COUNT(IF(price > 100, DISTINCT item_id, NULL))

하지만 오류가 발생했고, 아래와 같이 해결했다.

해결 방법

생각해보면, 조건에 맞는 값만 가져와서 중복 여부를 판단하는 것이니 아래 방법이 맞기도 하고 더 직관적이기도 하다.

SELECT COUNT(DISTINCT IF(price > 100, item_id, NULL))

참고 문서