728x90
반응형
문제
분석
시간순으로 해당되는 시간을 count 하여 출력하는 문제라고 생각을 했다.
1. 시간순으로 출력하는 코드를 구현을 해야 된다.
- 검색을 해보니 CONNECT BY 를 쓰면 된다.
2. group by 로 DB에 시간으로 그룹을 만든다.
3. 시간과 DB 에 있는 시간을 join 하여 count 를 한다.
구현
1. 0~24 까지 출력해본다.
SELECT LEVEL-1 AS HOUR FROM DUAL CONNECT BY LEVEL <=24
2. join 하여 출력을 해본다. 그렇게 되면 시간대에 맞춰 데이터들이 중복되어 나온다.
SELECT
A.HOUR, O.DATETIME
FROM
(SELECT LEVEL-1 AS HOUR FROM DUAL CONNECT BY LEVEL <=24) A
LEFT JOIN
ANIMAL_OUTS O ON A.HOUR = to_char(O.DATETIME, 'HH24')
3. 중복된 데이터를 GROUP BY 해준후 COUNT 로 중복된 데이터를 계산한다.
SELECT
A.HOUR, COUNT(O.DATETIME)
FROM
(SELECT LEVEL-1 AS HOUR FROM DUAL CONNECT BY LEVEL <=24) A
LEFT JOIN
ANIMAL_OUTS O ON A.HOUR = to_char(O.DATETIME, 'HH24')
GROUP BY A.HOUR
ORDER BY A.HOUR
문제:
https://programmers.co.kr/learn/courses/30/lessons/59413
728x90
반응형
'Algorithm > 프로그래머스 SQL' 카테고리의 다른 글
[프로그래머스] 오랜 기간 보호한 동물(1) (0) | 2021.10.15 |
---|---|
[프로그래머스] 없어진 기록 찾기 (0) | 2021.09.28 |
[프로그래머스] 입양 시각 구하기(1) (0) | 2021.07.20 |
[프로그래머스] 동명 동물 수 찾기 (0) | 2021.07.20 |
[프로그래머스] 중복 제거하기 (0) | 2021.07.20 |
댓글