언어 공부/SQL
[SQL] 프로그래머스 SQL > GROUP BY
수기
2022. 4. 3. 21:40
https://programmers.co.kr/learn/courses/30/parts/17044
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
GROUP BY > 고양이와 개는 몇 마리 있을까
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE)
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
GROUP BY > 동명 동물 수 찾기
SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME
GROUP BY > 입양 시각 구하기(1)
SELECT HOUR(DATETIME) AS HOUR, COUNT(HOUR(DATETIME)) AS COUNT FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR
GROUP BY > 입양 시각 구하기(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
구글 검색을 통해서 풀었다.
입양 시각 구하기(2)의 경우, (1)과 같이 출력할 경우 9시부터 19시까지밖에 결과가 나오지 않기 때문에,
SET함수로 변수 HOUR를 선언 해 준 뒤에 SELECT를 해줘서 구해야한다.
@HOUR := -1 와 @HOUR := @HOUR + 1 에서
:= 은 대입,
HOUR(DATETIME) = @HOUR 에서 = 은 등호 를 의미한다.
SET @HOUR := -1; #HOUR 변수 선언
SELECT (@HOUR := @HOUR +1) # HOUR - #HOUR 0부터 ... 반복
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @HOUR) AS COUNT
# 테이블 ANIMAL_OUTS에서 HOUR(DATETIME)과 @HOUR이 같을 때의 수를 COUNT 후 칼럼명은 COUNT로 지정 FROM ANIMAL_OUTS
WHERE @HOUR < 23 #HOUR - 0부터 23까지 반복 (3번째 줄과 연관)