본문 바로가기
알고리즘, 문제해결/알고리즘, 자료구조

[SQL] Group By

by 카펀 2021. 3. 10.

프로그래머스 링크: programmers.co.kr/learn/courses/30/lessons/59040

 

코딩테스트 연습 - 고양이와 개는 몇 마리 있을까

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

코딩 테스트의 SQL 문제를 대비하기 위해 공부하며 정리한 글입니다.

 

1. 고양이와 개는 몇 마리 있을까

programmers.co.kr/learn/courses/30/lessons/59040

 

코딩테스트 연습 - 고양이와 개는 몇 마리 있을까

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

ANIMAL_INS 테이블로부터, 고양이와 개가 각각 몇 마리인지 출력하는 문제

 

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE)
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE

 

2. 동명 동물 수 찾기

programmers.co.kr/learn/courses/30/lessons/59041

 

코딩테스트 연습 - 동명 동물 수 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

ANIMAL_INS 테이블로부터, 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 이름 순으로 정렬하며, 이름이 없는 동물은 제외하여 출력하는 문제

 

SELECT NAME, COUNT(*)
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME

 

3. 입양 시각 구하기(1)

programmers.co.kr/learn/courses/30/lessons/59412

 

코딩테스트 연습 - 입양 시각 구하기(1)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

ANIMAL_OUTS 테이블로부터, 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생하였는지 시간 순으로 정렬하여 출력하는 문제

 

SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 and HOUR <= 20
ORDER BY HOUR

 

4. 입양 시각 구하기(2)

programmers.co.kr/learn/courses/30/lessons/59413

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

ANIMAL_OUTS 테이블에서, 0시부터 23시까지, 각 시간대벼로 입양이 몇 건이나 발생하였는지 시간 순으로 정렬하여 출력하는 문제

 

이 문제는 프로그래머스 내에서 레벨 4로 분류되어 있습니다.

저도 공부하던 중에 0시처럼 항목이 없는 부분을 출력하려면 어떻게 해야 하는지 감이 오지 않았고, 인터넷 검색을 통해 로컬 변수라는 개념을 접했습니다.

 

SET @hour := -1;
-- 로컬 변수

SELECT (@hour := @hour + 1) as HOUR,
(SELECT
    COUNT(*)
    FROM ANIMAL_OUTS
    WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23;

 

제가 직접 작성한 코드가 아닌, 다른 블로그를 참고하여 작성한 코드입니다.

'알고리즘, 문제해결 > 알고리즘, 자료구조' 카테고리의 다른 글

[SQL] JOIN  (0) 2021.03.11
[SQL] is Null  (0) 2021.03.11
[SQL] SUM, MAX, MIN  (0) 2021.03.10
[SQL] SELECT  (0) 2021.03.10
그래프 이론  (0) 2021.02.12

댓글