알고리즘/프로그래머스
프로그래머스 SQL 고득점 Kit 코드 총정리 (MySQL) : GROUP BY
개발하는 크롱
2021. 3. 19. 01:26
반응형
GROUP BY
group by는 값은 값을 가진 데이터끼리 묶어주는 역할을 한다. 뒤에 having과 함께 사용할 수 있고, having은 반드시 group by 뒤에만 나올 수 있다. having 뒤에는 조건을 적는다.
고양이와 개는 몇 마리 있을까 (Level 2)
SELECT ANIMAL_TYPE, COUNT(*) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE ASC
동명 동물 수 찾기 (Level 2)
SELECT NAME, COUNT(NAME)
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME)>1
ORDER BY NAME ASC
입양 시각 구하기(1) (Level 2)
SELECT DATE_FORMAT(DATETIME, '%H') AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
GROUP BY DATE_FORMAT(DATETIME, '%H')
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR ASC
입양 시각 구하기(2) (Level 4)
with recursive time as
(select 0 as hour union all select hour+1 from time where hour<23)
select hour, count(animal_id) count
from time
left outer join animal_outs on (hour = date_format(datetime, '%H') )
group by hour
DATE_FORMAT에 익숙하지 않은 분은 한번 찾아보길 바란다.
나머지 SQL문제는 다 쉽게 풀었는데 마지막 문제는 어려웠다.
마지막 문제는 with 절을 사용하는데 with는 임시의 view(가상 테이블; 물리적으로 존재하지 않고 계산된 테이블)를 만드는데 사용된다.
이 문제 풀면서 with recursive 사용해서 테이블 만드는 걸 처음 봤다. 따로 나도 설명은 잘 못하겠고 내가 참고한 블로그 링크를 첨부하겠다.
https://hyunmin1906.tistory.com/149
반응형