본문 바로가기
알고리즘/programmers

[프로그래머스 SQL] GROUP BY 문제 풀이

by hyerann 2020. 1. 19.

GROUP BY는 데이터를 그룹화하여 처리할 수 있는가를 확인하는 문제들입니다.

레벨 4인 마지막 문제를 제외하곤 레벨 2로 측정되어 있고, 출제 빈도와 평균 점수는 보통이라고 합니다.

마지막 문제의 경우 변수 사용법을 알아두면 빠른 시간 내에 짧은 코드로 문제를 해결할 수 있습니다.

https://programmers.co.kr/learn/courses/30/parts/17044

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

SELECT ANIMAL_TYPE, COUNT(*) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE

동명 동물 수 찾기

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

입양 시각 구하기(1)

SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9
AND HOUR(DATETIME) <= 19
GROUP BY HOUR

입양 시각 구하기(2)

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
'=' 연산자는 SET절에서는 대입 연산자로 해석되지만 나머지 경우 비교 연산자로 해석됩니다.
그에 반해, ':=' 연산자는 항상 대입 연산자로 해석됩니다.

댓글