Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터베이스
- 자바
- 파이썬
- CS지식
- 플러터
- 프로그래머스
- spring
- Spring Security
- backjoon
- springboot
- 네트워크
- baekjoon
- 스프링부트
- 자바스크립트
- Oracle
- 스프링
- Java
- CS
- python
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- 백준
- 시큐리티
- 리눅스
- JPA
- 자료구조
- javascript
- Flutter
- postgresql
- DB
- 데이터
Archives
- Today
- Total
Jin's Dev Story
[Oracle] LEVEL(feat. DUAL, CONNECT BY) 본문
LEVEL을 활용한 문제
https://school.programmers.co.kr/learn/courses/30/lessons/59413
-- 코드 풀이
SELECT
B.TIME AS HOUR
, NVL(COUNT(AO.ANIMAL_ID), 0) AS COUNT
FROM ANIMAL_OUTS AO
RIGHT OUTER JOIN (SELECT LEVEL -1 TIME
FROM DUAL
CONNECT BY LEVEL <= 24) B
ON B.TIME = TO_NUMBER(TO_CHAR(AO.DATETIME, 'HH24'))
GROUP BY B.TIME
ORDER BY B.TIME;
LEVEL
- 숫자 형식으로 계층 수준(상위 → 하위)를 식별하기 위해 계층 쿼리에서 사용되는 의사 열을 나타냄
- root 행에 대해 1을 부여하며 그 다음 행은 2, 3, 4 ..가 되는 구조로 반환함
- 이 같은 구조는 CONNECT BY절 사용을 통해 만들 수 있음
CONNECT BY
- 계층 구조의 상위 행과 하위 행 간의 계층 관계를 정의해주는 것
DUAL
- 더미 테이블
- 더미 테이블에 LEVEL 값을 각 행에 부여하여 반환하는 것
예시
EX1) 기본 예제
SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL <= 5
LEVEL |
1 |
2 |
3 |
4 |
5 |
EX2) 답안 예제 속 서브 쿼리
- (LEVEL -1) 이기에 0~23까지 행이 반환 되는 것
SELECT LEVER -1 HOUR
FROM DUAL
CONNECT BY LEVEL <= 24
HOUR |
0 |
1 |
2 |
(중간 생략) |
22 |
23 |
'Database > Oracle' 카테고리의 다른 글
[MySQL & Oracle] MySQL과 Oracle의 차이 (0) | 2023.08.22 |
---|---|
[Oracle] Oracle이란? (0) | 2023.08.22 |