Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

데이터 분석

프로그래머스 - 입양 시각 구하기(1), 입양 시각 구하기(2) (TO_CHAR, 계층형 질의) 본문

SQL/프로그래머스 코딩

프로그래머스 - 입양 시각 구하기(1), 입양 시각 구하기(2) (TO_CHAR, 계층형 질의)

시니조 2023. 2. 27. 22:11
  • TO_CHAR
  • 계층형 질의

 

입양 시각 구하기(1)

TO_CHAR(숫자|날짜 [, FORMAT])

: 숫자나 날짜를 주어진 FORMAT 형태로 문자열 타입으로 변환한다.

 

FORMAT 형식에서

  • HH24 : 24시 형태로 표현
  • FMHH24 : 24시 형태로 표현 단, 앞에 0 생략 (ex. 01 > 1)

 

SELECT TO_CHAR(DATETIME, 'FMHH24') HOUR, COUNT(*) COUNT
FROM ANIMAL_OUTS
WHERE TO_CHAR(DATETIME, 'HH24') BETWEEN '09' AND '19'
GROUP BY TO_CHAR(DATETIME, 'FMHH24')
ORDER BY TO_NUMBER(TO_CHAR(DATETIME, 'FMHH24'))
;

 

https://school.programmers.co.kr/learn/courses/30/lessons/59412

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

입양 시각 구하기(2)

계층형 질의

 

계층형 질의에서 사용되는 가상 컬럼

  • LEVEL : 루트 데이터를 1로 시작 > LEAF까지 하위로 갈수록 1씩 증가

계층형 질의 절

  • START WITH 절 : 레벨의 시작점 
  • CONNECT BY 절 : CONNECT BY절이 만족할 경우 그 다음에 자식 레벨 지정

 

 

내가 푼 답

SELECT A.HOUR, NVL(B.COUNT, 0) COUNT
FROM (
    SELECT (LEVEL-1) AS HOUR
    FROM DUAL 
    CONNECT BY LEVEL <= 24
    ) A LEFT OUTER JOIN(
    SELECT TO_CHAR(DATETIME, 'HH24') HOUR, COUNT(*) COUNT
    FROM ANIMAL_OUTS
    GROUP BY TO_CHAR(DATETIME, 'HH24')
    ORDER BY HOUR
    ) B
ON A.HOUR = B.HOUR
ORDER BY HOUR
;

 

우선 인라인뷰 안에 있는 3~5번쨰 줄은 0 부터 24시까지 시각을 나타낼 컬럼을 테이블로 작성한 것이다.

그 후, 이 시각 테이블의 값은 모두 나타나야 되기 떄문에 OUTER JOIN을 사용했다.  

 

 

마지막으로 B테이블의 NULL값을 0으로 바꿔주면 끝 (코드 1번쨰 줄 - NVL함수 사용)

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/59413

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr