문제
- 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))