동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
컬럼명에 Cat, Dog가 들어가는 것이 아니라 row에서 처리해주어야 해서 조금 당황했다.
아래와 같이 SELECT문을 미완인 채로 자꾸 출력해서 그렇다.
SELECT COUNT(ANIMAL_TYPE)
SELECT문에서 ANIMAL_TYPE 컬럼과, COUNT로 집계한 값을 담아줄 컬럼을 분리하지 않으면
위와 같은 결과가 나타나게 된다.
SELECT문에서 구하고자 하는 컬럼을 적어 주었어도, GROUP BY에서 어떤 카테고리들을 집계할 지 한번 더 적어주어야 한다. GROUP BY로 풀어주어야 하는 문제라는 것을 알고 나서는 술술 풀리긴 했다.
예외처리에서도 한번 막혔다. 굳이 '고양이 먼저 출력'한다는 조건을 걸었으므로, ORDER BY도 꼼꼼하게 해주자.
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS 'count'
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
1️⃣ WHERE 구에서는 COUNT 등의 집계 연산이 불가능하다.
2️⃣ AS는 SELECT에서만 활용 가능하다. ORDER BY에서도 가능하지만, 주로 SELECT에서.
3️⃣ GROUP BY 뒤에서는 함수나 조건문이 올 수 있다고 한다. -> 확인 필요!