프로그래머스에서 lv.2 mysql 문제를 풀면서 모르는 것이 나와서 정리를 해보려고 한다.
문제는
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
위와 같았다.
해당 문제는 서브쿼리를 사용해서 동물 이름이 없는 동물을 제외하고, 동물 이름에 해당 이름이 몇 번이 사용이 됐는지 테이블을 만든 뒤, 해당 테이블에서 두 번 이상 쓰인 이름인 동물 이름을 출력한다.
서브쿼리로는
SELECT NAME, COUNT(name) as "COUNT" FROM animal_ins WHERE name IS NOT NULL GROUP BY name ORDER BY name
위와 같다.
처음 시도하고 틀린 답안은
SELECT * FROM (SELECT NAME, COUNT(name) as "COUNT" FROM animal_ins WHERE name IS NOT NULL GROUP BY name ORDER BY name) WHERE COUNT > 1
위와 같다.

해당 오류가 발생을 하면서 안됐다.
해당 오류는 오라클은 서브 쿼리를 사용할 때 서브 쿼리에 별칭을 사용하지 않아도 되지만, MySQL은 반드시 별칭을 사용해주어야 한다고 한다.
SELECT * FROM (SELECT NAME, COUNT(name) as "COUNT" FROM animal_ins WHERE name IS NOT NULL GROUP BY name ORDER BY name) a WHERE COUNT > 1
이렇게 별칭을 추가해주니 정상적으로 데이터가 출력된다