본문 바로가기

오라클13

[Oracle] 오라클 PIVOT(피벗) 함수 사용법 (행을 열로 변환하는 방법) 오라클 11g부터 PIVOT 기능을 제공합니다. 기존 이하버전에서는 DECODE 함수를 이용하여 로우를 컬럼으로 변경하는 작업을 하였습니다. PIVOT 기능을 이용하면 DECODE의 복잡하고 비직관적인 코드를 조금 더 직관적으로 작성할 수 있습니다. 아쉬운 접은 PIVOT 기능을 사용하더라도 PIVOT을 할 컬럼을 미리 정의를 해 놓아야 한다는 점이다. 상황에 맞게 PIVOT를 사용할지 DECODE를 사용할지 결정해서 사용하면 될꺼 같습니다. 기본 문법 SELECT * FROM ( 피벗 대상 쿼리문 ) PIVOT ( 그룹합수(집계컬럼) FOR 피벗컬럼 IN (피벗컬럼값 AS 별칭 ... ) PIVOT 사용법 직군별, 월별 입사 건수 SELECT * FROM ( SELECT job , TO_CHAR(hir.. 2022. 3. 18.
[Oracle] 오라클 데이터 복구 (TIMESTAMP) 데이터를 실수로 수정 혹은 삭제하고 습관적으로 commit 을 해버리고 아차차... 할 경우가 있지요.. 오라클은 다행히 복구할 수 있는 기능이 있습니다. 바로 타임스탬프(TIMESTAMP)입니다. 오라클 9i Release 2부터 Flashback 기능을 통해 사용할 수 있습니다. 일종의 타이머가 있는 휴지통이라고 생각하면 됩니다. DB 설정에 따라 Flashback의 사이즈만큼만 과거 데이터를 보관하고 있으니, 변경이 자주 발생하는 테이블은 복구 가능한 시점이 짧을 수 있습니다. [사용법] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -- 10초전 데이터 조회 SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INT.. 2021. 12. 1.
[Oracle] 오라클 Null 처리 NVL, NVL2 사용방법 쿼리 수행 시 해당 컬럼이 빈값 (null) 일 경우 처리하는 함수인 NVL, NVL2를 사용합니다. NVL(컬럼명, 지정값) 컬럼이 NULL 인경우 지정값을 출력 NVL2(컬럼명, 지정값1, 지정값2) 컬럼에 값이 있을 경우 지정값1을 출력, NULL 인 경우 지정값2 출력 [NVL] Q. 접속 이력이 없을 경우 접속 시간을 '0000-00-00'로 표현 해보시오. SELECT NVL(LAST_CONN_DATE, '0000-00-00') AS '접속시간' FROM EMP [NVL2] Q. 접속 이력이 없을 경우 'N' 있을 경우 'Y' 로 표현 해보시오. SELECT NVL2(LAST_CONN_DATE, 'Y', 'N') AS '접속유무' FROM EMP 2020. 4. 2.
[Oracle] 오라클 소수점 올림/내림/반올림/버림 사용방법 간단히 오라클 소수점 처리하는 방법을 알아봅시다. ​ 올림함수 CEIL(n) : 무조건 소수점을 올려 정수가 됩니다. SELECT CEIL(4.2) FROM DUAL --결과 : 5 ​ 내림함수 FLOOR(n) : 무조건 소수점을 내려 정수가 됩니다. SELECT FLOOR(4.9) FROM DUAL --결과 : 3 ​ 반올림함수 ROUND(n,반올림 자릿수) SELECT ROUND(3.1357) FROM DUAL --결과 : 3 SELECT ROUND(3.1357,0) FROM DUAL --결과 : 3 SELECT ROUND(3.1357,1) FROM DUAL --결과 : 3.1 SELECT ROUND(3.1357,2) FROM DUAL --결과 : 3.14 SELECT ROUND(3.1357,3) F.. 2020. 4. 1.
[Oracle] 오라클 시노님(Synonym) 사용방법(생성/조회/삭제) 시노님(Synonym) 이란? 데이터베이스의 객체는 생성 유저 기준으로 권한을 가집니다. 다른 유저가 해당 객체를 사용 및 참조하기 위해서는 다양한 방법이 있지만, 주로 시노님을 사용합니다. 시노님(Synonym) 생성 [문법] CREATE OR REPLACE [PUBLIC / PRIVATE] SYNONYM [시노님명] FOR [객체명] [예제] CREATE OR REPLACE SYNONYM EMP FOR DBTEST1.EMP; 시노님(Synonym) 조회 --해당 유저 SELECT * FROM USER_SYNONYMS --전체 조회 SELECT * FROM ALL_SYNONYMS ​ 시노님(Synonym) 삭제 시노님 삭제는 PRIVATE 시노님은 DROP SYNONYM, DROP ANY SYNONYM.. 2020. 3. 31.
[Oracle] 오라클 OVER() 함수 사용방법 (OVER() PARTITION BY ~ ) OVER 함수는 GROUP BY, ORDER BY를 이용하는 서브쿼리를 편리하게 대체하는 함수입니다. GROUP BY 대체이기 때문에 ROW_NUMBER(), COUNT(), MAX(), MIN(), SUM(), AVG(), RANK() 등의 분석 함수와 함께 사용됩니다. 그리고 OVER() 사용 시 GROUP BY와 비슷하지만 레코드의 수는 변함이 없습니다. [사용방법] ROW_NUMBER() OVER( PARTITION BY 컬럼명 ORDER BY 컬럼명 ) ※ PARTITION BY, ORDER BY 는 분석함수에 따라 한가지만 적을 수도 있고, 둘다 사용할 수 있습니다. ​ [사용예제] Q.부서코드 별 그룹핑하여 부서코드 빠른 순서 기준으로 순번을 주고 싶을 때 A. SELECT ROW_NUMBE.. 2020. 3. 31.
[Oracle] 오라클 LPAD, RPAD 함수 사용방법 (0, 공백 채우기) 오늘은 주로 공백, 0 등을 채울 때 사용하는 LPAD, RPAD 에 대해 알아봅시다. 주로 숫자형 데이터를 문자형으로 변환하고 그 문자길이를 똑같이 맞추기 위해 사용합니다. 함수명에서 알 수 있듯이 LPAD는 왼쪽, RPAD는 오른쪽부터 총길이 만큼 지정한 문자를 채웁니다. 예제를 보는게 가장 이해하기 쉽습니다. [사용법 ] LPAD('값', '총 문자길이' '채울문자') RPAD('값', '총 문자길이' '채울문자') [LPAD 예제] ※ EMPNO를 8자리로 맞추되 짧을 경우 앞에 '0'을 붙인다. (EMPNO의 값은 '123' 이다.) SELECT LPAD(EMPNO, 8, 0) FROM EMPLOYEE ==> 결과 : 00000123 [RPAD 예제] ※ EMPNO를 8자리로 맞추되 짧을 경우 .. 2020. 3. 31.
[Oracle] 오라클 조건절/CASE구문/DECODE구문 오늘은 오라클 쿼리에서 사용할 수 있는 조건절인 CASE 구문과 DECODE 구문의 사용방법을 알아보겠습니다. 쿼리 내에 조건절을 사용할 수 있는 대표적인 방법으로는 CASE 구문과 DECODE 구문이 있는데요, 지극히 개인적인 제 판단으로는 CASE구문이 좀 더 가독성이 좋더라구요. 그래서 간단한 조건절의 경우 DECODE를 사용하고 조금 복잡한 조건식이 들어갈 경우 CASE를 사용합니다. [CASE 구문] CASE WHEN [조건식1] THEN [결과1] WHEN [조건식2] THEN [결과2] ... ELSE [ELSE 결과] END [DECODE 구문] DECODE([비교컬럼], [조건1], [결과1], [조건2], [결과2], … , [ELSE 결과] ) ​ ​ 예제를 통해 좀 더 자세히 알아보.. 2020. 3. 31.
[Oracle] 오라클 날짜 포맷/날짜 연산/ 날짜 계산 ​ [날짜 포맷] SELECT SYSDATE AS BASIC , TO_CHAR(SYSDATE, 'YYYY.MM.DD') -- 년월일 , TO_CHAR(SYSDATE, 'YYYY.MM.DD HH:MI:SS') -- 년월일 시분초 (12시) , TO_CHAR(SYSDATE, 'YYYY.MM.DD HH24:MI:SS') -- 년월일 시분초 (24시) , TO_CHAR(SYSDATE, 'YYYY.MM.DD PM HH:MI:SS ') -- 년월일 오전오후 시분초 , TO_CHAR(SYSDATE, 'YYYY.MM.DD DY HH:MI:SS') -- 년월일 요일 시분초 (금) , TO_CHAR(SYSDATE, 'YYYY.MM.DD DAY HH:MI:SS') -- 년월일 요일 시분초 (금요일) FROM DUAL; [날.. 2020. 3. 31.