문제
제출한 코드
SELECT HOUR(datetime) H, COUNT(datetime) 'COUNT'
FROM animal_outs
GROUP BY H
HAVING H BETWEEN 0 AND 23
ORDER BY H
-- 오답
정답 코드
문제에서 0시에서 23시까지 조회하라고 했지만 데이터상 0~6시는 없으므로 SET문으로 0~23시 테이블을 만들어줘야한다.
# 0~23 테이블 만들기
SET @HOUR = -1;
SELECT (@HOUR := @HOUR +1) AS HOUR
FROM animal_outs
WHERE @HOUR < 23;
<SET>
- @변수명 = 넣어줄 값
@HOUR = -1 : HOUR 변수에 -1 넣기 - := 대입하기
@HOUR에 +1 씩 대입하기 → 0, 1, 2, 3.. - WHERE 절로 조건걸어서 @HOUR 변수에 23전까지만 +1 대입하기
즉, 22에서 +1 넣고 끝내라 (=23)
→ 이렇게 0~23 테이블 생성
# 정답코드
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
'🛠️Skill > CodingTest' 카테고리의 다른 글
[프로그래머스] Lv3. 헤비 유저가 소유한 장소 (0) | 2022.11.27 |
---|---|
[프로그래머스] Lv3. 조건별로 분류하여 주문상태 출력하기 (0) | 2022.11.24 |
[프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기 / GROUP BY (0) | 2022.11.20 |
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기 / GROUP BY (0) | 2022.11.18 |
[leetcode] 1141. User Activity for the Past 30 Days I / DATE_ADD, DATEDIFF (0) | 2022.11.18 |
댓글