#1 고양이와 개는 몇 마리 있을까
GROUP BY로 고양이와 개로 나눈다음 COUNT로 그 수를 세주면 된다.
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
#2 동명 동물 수 찾기
이름으로 나눈다음 COUNT한 값이 1보다 크면 이라는 조건을 걸어준다.
HAVING은 GROUP BY 뒤에 사용하여 그룹화할 것의 조건을 걸어주도록 한다.
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME ASC;
#3 입양 시각 구하기(1)
HOUR을 사용해서 DATETIME에서 시간 값만 가져오고, GROUP BY로 시간으로 나눈다.
시간이 9시 부터 19시까지 라는 조건을 걸어준다. COUNT로 그 시간의 값들이 몇 개 있는지 체크한다.
SELECT HOUR(DATETIME) AS HOUR, COUNT(HOUR(DATETIME)) AS COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR ASC
#4 입양 시각 구하기(2)
SET @hour로 전역 변수를 선언 하고 SELECT에서 값을 출력하고, WHERE문에서 조건을 걸어준다.
내부 SELECT문에서 @hour값과 ANIMAL_OUT의 DATETIME의 시간 값을 비교하여 데이터 개수 값을 COUNT해준다.
WHERE문에서 @hour의 조건을 걸어두는데 0시 부터 23시까지이기에 @hour가 -1로 초기화 하고 23까지 계속 1을 더해주는 식이다.
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;
정리하기
GROUP BY : 유니크한 데이터로 그룹화
HAVING : GROUP BY에 조건을 건다.
COUNT : 개수 세기
SET @변수명 : 전역 변수 선언
'프로그래밍 > MySQL' 카테고리의 다른 글
[MySQL] 프로그래머스 SQL JOIN 답 해설 (0) | 2021.02.17 |
---|---|
[MySQL] 프로그래머스 SQL IS NULL 답 해설 (0) | 2021.02.17 |
[MySQL] 프로그래머스 SQL SUM, MAX, MIN 답 해설 (0) | 2021.02.17 |
[MySQL] 프로그래머스 SQL SELECT 답 해설 (0) | 2021.02.17 |
[MySQL] MySQL공부 순서 (0) | 2021.02.17 |