코딩테스트 연습
[프로그래머스_코테 연습] SQL | Group by
곽구
2022. 2. 23. 16:50
1. GROUP BY : 특정 속성을 기준으로 그룹화 하여 검색할 때 그룹화 할 속성을 지정한다.
-- 기본구조
SELECT [DISTINCT] 컬럼, 그룹함수(컬럼)
FROM 테이블명
[WHERE 조건]
[GROUP BY Group대상]
[ORDERJ BY 정렬대상[ASC/DESC]]
- SELECT 절에 그룹함수와 컬럼명이 같이 기술된 경우 해당 컬럼은 반드시 GROUP BY절에 그룹화 되어야 한다.
- 결과 값이 정렬되길 원한다면 반드시 ORDER BY 절을 추가한다.
| 문제설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE 는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. |

❓ 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해 주세요.
[정답]
-- MySQL
SELECT MAX(DATETIME) '시간'
FROM ANIMAL_INS;
-- Oracle
-- 오라클은 AS를 이용해 별칭을 지정할 수 있다.
SELECT MAX(DATETIME) AS 시간
FROM ANIMAL_INS;
| 예시
예를 들어 ANIMAL_INS 테이블이 다음과 같다면, 고양이는 2마리, 개는 1마리 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

| 풀이
그룹화 하여 카운트 하고 정렬하기
SELECT ANIMAL_TYPE , COUNT(*)
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE -- 그룹 대상
ORDER BY ANIMAL_TYPE ASC -- 정렬 대상, 질문에 CAT 이 먼저나와야 한다고 하니 오름차순 정렬 해야한다.
-- DESC(내림차순) , ASC(오름차순)

