-
* [Level 4] 입양 시각 구하기(2): SET[프로그래머스] SQL 고득점 Kit/GROUP BY 2022. 10. 11. 21:07
[문제]
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
처음 접근: GROUP BY로 코드를 작성하자 DATETIME에 해당되는 시간만 테이블이 완성되어 7~19시까지의 결과만 나옴
SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT FROM ANIMAL_OUTS GROUP BY HOUR(DATETIME) HAVING HOUR >= 0 AND HOUR <= 23 ORDER BY HOUR
데이터베이스에 없는 시간들을 만들어주어야 하므로 0시부터 23시까지의 테이블을 SET 활용하여 새롭게 만든 뒤
각 시간에 해당되는 입양 건수를 세어 출력하면 된다.
정답
SET @HOUR = -1; // HOUR 변수에 -1 값 입력 SELECT @HOUR := @HOUR + 1 AS HOUR, // HOUR 변수에 HOUR+1 을 대입 → WHERE 절 조건 23 미만일 때까지 (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE @HOUR = HOUR(DATETIME)) AS COUNT // HOUR 변수와 시간이 같을 때 카운트 FROM ANIMAL_OUTS WHERE @HOUR < 23
'[프로그래머스] SQL 고득점 Kit > GROUP BY' 카테고리의 다른 글
* [Level 4] 식품분류별 가장 비싼 식품의 정보 조회하기 (0) 2022.10.08 * [Level 3] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) 2022.10.08 * [Level 2] 입양 시각 구하기(1): 날짜 데이터 출력 (1) 2022.10.08 * [Level 2] 동명 동물 수 찾기 (0) 2022.10.08