programmers.co.kr/learn/courses/30/lessons/59040
1. 서론
조금 오버해서 어려웠던 문제
2. 문제 풀이
ANIMAL_INS: 동물 보호소에 들어온 동물의 정보를 담은 테이블
테이블 구조
ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE
(각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부)
Q. 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
고양이와 개를 count 하는 문제. 그리고 고양이 (Cat)가 개(Dog) 보다 먼저 나와야 한다.
animal_type을 이용해서 그냥 count 하면 되는데 정렬할 때 고양이가 개보다 먼저 나와야 한다는 거에 정신 팔려서 order by 할 때 decode를 썼다.(정렬 시 우선순위를 정할 수 있음)
decode 참조: huskdoll.tistory.com/343
그런데 생각해보니까 Cat, Dog 니까 그냥 알파벳 순으로 정렬하면 당연히 고양이가 먼저 나오는 것이다... 그래서 저렇게 오버할 필요 없이 그냥 order by 만 해도 된다.
3. 코드 설명
SELECT animal_type, count(animal_type)
FROM animal_ins
GROUP BY animal_type
ORDER BY animal_type
--ORDER BY decode(animal_type, 'Cat','1', 'Dog', '2');
이렇게 심플할 수 없다. 이 문제의 핵심은 group by를 쓰는 것이다. 왜냐하면 함수와 변수를 같이 조회할 때는 group by를 써줘야 하기 때문이다... 이게 핵심인데 decode 찾아본 시간이 더 컸다... ㅎ
'SQL' 카테고리의 다른 글
[ORACLE] 프로그래머스 NULL 처리하기(+MySQL) (0) | 2021.03.11 |
---|---|
[ORACLE] 프로그래머스 동명 동물 수 찾기 (0) | 2021.03.11 |
[ORACLE] 프로그래머스 중복 제거하기 (0) | 2021.03.11 |
[ORACLE] 프로그래머스 이름이 있는 동물의 아이디 (0) | 2021.03.11 |
[ORACLE] 프로그래머스 상위 n개 레코드 (+MySQL) (0) | 2021.03.11 |