본문 바로가기

쿼리3

오라클 connect by level 사용법 서비스를 개발하다보면 시간별, 월별 그래프 등을 보여줘야할 때가 있다. 예를들어 과거 1년간의 월별 그래프를 표현한다고 치자. 12개월간의 데이터가 모두 수집되어 있으면 고민할 필요 없이 SQL을 작성하여 그래프를 표현할 것이다. 하지만 수집에 누락이 있다던지의 문제로 인해 데이터가 비어있는 경우가 있을 수 있다. 이럴때는 CONNECT BY LEVEL을 이용하여 미리 시간 데이터를 만들어 놓고 JOIN을 통하여 차트 데이터를 구현한다. 다음은 현재시간을 기준으로 월별, 일별, 년도별을 출력하는 예제이다. - 과거 1년간 월별 출력 SELECT V_MONTH FROM ( SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -LEVEL+1), 'YYYYMM') AS V_MONTH FROM DUA.. 2022. 2. 15.
오라클에서 인덱스가 없는 테이블에 인덱스 생성하기 (인덱스 생성을 빠르게) 어느날 고객으로부터 화면 조회가 느리다는 이야기를 들었다. 확인해 보니 해당 화면은 A라는 테이블을 사용 중 이었고 해당 테이블에는 인덱스가 없었다. A라는 테이블에는 약 3억건의 데이터가 있었다. 단순 SELECT조회도 느렸고 FULL PARALLEL의 힌트를 줘도 느렸다. 그래서 인덱스를 생성하게 되었는데. 두가지의 방법을 생각해 보았다. 1. 먼저 TEMP테이블을 생성 후 인덱스를 생성한 뒤 기존의 테이블의 데이터를 SELECT 후 INSERT하는 방법. 그리고 기존 테이블은 지우고 TEMP 테이블을 기존 테이블명으로 변경한다. 2. 기존 테이블에 CREATE INDEX를 이용하여 생성한다. 3억건이나 되는 테이블이니 당연히 1번이 빠를 거라고 생각하였지만 보통 귀찮은 일이 아니다. 그래서 찾아보니.. 2020. 11. 9.
오라클 날짜 관련 - 현재일자 구하기SELECT SYSDATE FROM DUAL;SELECT CURRENT_DATE FROM DUAL; - DATE형식을 STRING FORMAT으로 변형TO_CHAR( SYSDATE , '데이트형식') FROM DUAL; - 데이트형식CC : 세기YYYY : 년도Y,YYY : 년도에 콤마추가YEAR : 년도를 글자로 변형Q : 분기MM : 달RM : 달을 로마숫자로 표기MONTH : 달을 글자로 변형WW: 년도의 주W : 이달의 주DDD : 년도의 일자DD : 월의 일자D : 주의 일자DAY : 요일DY : 요일의 약자J : Julian Date , 4712BC의 1월1일부터.HH : 시간 (12)HH24 : 시간(24)MI : 분SS : 초SSSSS : 자정이후 경과된 초 - 달의 마지.. 2019. 2. 27.