문제설명
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SQL문을 실행하면 다음과 같이 나와야 합니다.
| HOUR | COUNT |
| 0 | 0 |
| 1 | 0 |
| 2 | 0 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 3 |
| 8 | 1 |
| 9 | 1 |
| 10 | 2 |
| 11 | 13 |
| 12 | 10 |
| 13 | 14 |
| 14 | 9 |
| 15 | 7 |
| 16 | 10 |
| 17 | 12 |
| 18 | 16 |
| 19 | 2 |
| 20 | 0 |
| 21 | 0 |
| 22 | 0 |
| 23 | 0 |
코드설명
SQL문 작성 결과, 7시까지만 데이터가 조회되는 것을 확인할 수 있다.
이를 위해 set 함수를 이용해줘야 하는데 검색하여 찾아보았다.
SET @변수명 = 저장할값;
SET @변수명 := 저장할값;
SELECT @변수명 := 저장할값; 기본적인 문법이고, 셋 중에 골라 사용하면 된다.
<@변수에는 숫자, 문자, binary, NULL 이런 자료 1개만 간단하게 저장할 수 있다.>
현재 계산 중인 시간대에 해당하는 데이터만 남기기 위한 조건으로, ANIMAL_OUTS 테이블에 있는 DATETIME 변수와 @HOUR 변수가 동일한 순간 카운트를 진행하도록 조건을 준다.
코드
SET @HOUR = -1;
SELECT (@HOUR := @HOUR +1) AS HOUR,
(SELECT COUNT(HOUR(DATETIME))
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME)=@HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23;
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59413
'SQL Study > Programmers' 카테고리의 다른 글
| 프로그래머스[Lv.2] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2025.11.18 |
|---|---|
| 프로그래머스[Lv.4] 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 (0) | 2025.11.18 |
| 프로그래머스[Lv.2] 입양 시각 구하기 (1) (0) | 2025.11.11 |
| 프로그래머스[Lv.4] 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2025.11.11 |
| 프로그래머스[Lv.4] 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2025.11.11 |