: IT/프로그래머스
[코딩테스트] MySQL > SELECT 문 (3)
orora
2021. 5. 19. 22:18
반응형
1. GROUP BY > 동명 동물 수 찾기
SELECT NAME, COUNT(ANIMAL_ID) as 'COUNT'
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(ANIMAL_ID) >= 2
ORDER BY NAME ASC
- 이름(NAME)으로 그룹을 나누고, COUNT함수를 이용해서 동명 동물의 수를 조회한다
- HAVING 절에 같은 이름의 동물 수가 2개 이상으로 조건을 추가한다
- 이름 오름차순(ASC)으로 정렬한다
2. GROUP BY > 입양 시각 구하기(1)
SELECT DATE_FORMAT(DATETIME, '%H') AS 'HOUR', COUNT(ANIMAL_ID) AS 'COUNT'
FROM ANIMAL_OUTS
WHERE DATE_FORMAT(DATETIME, '%H') BETWEEN '09' AND '19'
GROUP BY DATE_FORMAT(DATETIME, '%H')
ORDER BY DATE_FORMAT(DATETIME, '%H')
- DATE_FORMAT 함수를 이용해서 시간만 표시하도록 했습니다.
- 그 시간에 입양이 몇건 발생했는지 COUNT 함수를 이용해서 조회했습니다
- 시간대를 오름차 순으로 정렬했습니다
3. GROUP BY > 입양 시각 구하기(2)
SELECT h.Hour as 'HOUR', COUNT(ANIMAL_ID) AS 'COUNT'
FROM ( SELECT 0 AS Hour
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9
UNION ALL SELECT 10
UNION ALL SELECT 11
UNION ALL SELECT 12
UNION ALL SELECT 13
UNION ALL SELECT 14
UNION ALL SELECT 15
UNION ALL SELECT 16
UNION ALL SELECT 17
UNION ALL SELECT 18
UNION ALL SELECT 19
UNION ALL SELECT 20
UNION ALL SELECT 21
UNION ALL SELECT 22
UNION ALL SELECT 23) AS h
LEFT OUTER JOIN ANIMAL_OUTS ON HOUR(DATETIME) = h.Hour
GROUP BY h.Hour
ORDER BY h.Hour
- 모든 시간을 조회한다 : 0~23을 조회하는 h테이블과 ANIMAL_OUTS 테이블을 LEFT OUTER JOIN으로 조인한다
- 0~23 시간으로 그룹핑하고 시간 순서대로 정렬한다
반응형