기억하기 위한 기록

[프로그래머스_코테 연습] SQL | Group by 본문

코딩테스트 연습

[프로그래머스_코테 연습] 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(오름차순)