[프로그래머스_MySQL] 동명 동물 수 찾기 (+ WHERE vs HAVING)

hyeji·2022년 12월 9일
0

동명 동물 수 찾기

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

SELECT NAME, COUNT(*) AS 'COUNT'
FROM ANIMAL_INS
GROUP BY NAME
WHERE COUNT(*) >= 2;

WHERE COUNT(*) ≥2 를 빼고 실행시키면 각 이름이 쓰인 횟수가 이름 별로 잘 뜨는데 WHERE문을 적으면 자꾸 오류가 떠서 보니

SELECT NAME, COUNT(*) AS 'COUNT'
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(*) >= 2;

이렇게 WHERE 대신 HAVING을 써야했다!

WHERE이랑 HAVING은 GROUP BY 사용할 때 다르다고 설명 들은 거 같은데 기억이 잘 안 나서 찾아봤다.

HAVING은 GROUP BY 한 결과에 조건을 걸고 싶을 때 사용한다.

WHERE > GROUP BY > HAVING 순서대로 사용해야하는데

SELECT NAME, COUNT(*) AS 'COUNT'
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(*) >= 2;

위 코드로 작성하면 Lucy 값을 가지는 결과만 출력되지만

SELECT NAME, COUNT(*) AS 'COUNT'
FROM ANIMAL_INS
GROUP BY NAME
WHERE NAME IS NOT NULL
HAVING COUNT(*) >= 2;

이렇게 WHERE을 GROUP BY 뒤에 적으면 오류가 뜬다!

GROUP에 조건문을 걸고싶으면 HAVING을 쓰자~ 😙

profile
Data Analyst

0개의 댓글