본문 바로가기

개발/오라클15

[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] 오라클 세로를 가로로 (LISTAGG) 세로로 조회된 결과를 한줄(가로로)로 표현하는 방법입니다. 1. LISTAGG(대상컬럼, 구분값) WITHIN GROUP( ORDER BY 정렬기준) 2. 순위 함수 : RANK() OVER (PARTITION BY 기준컬럼(미필수값) ORDER BY 기준컬럼(필수값) DESC) - RANK() : 중복 순위 다음은 해당 개수만큼 건너뛰고 반환. (1등이 두명이면 다음 순위는 3등이다.) - DENSE_RANK() : 중복 순위 상관없이 순차적으로 반환. (1등이 두명이면 다음 순위는 2등이다.) - ROW_NUMBER() : 중복과 관계 없이 무조건 순서대로 반환. (1등이 두명이어도 1,2등으로 표현된다.) # OVER analytic_clause 해당 함수가 쿼리 결과 집합에 대해 적용되라는 지시어.. 2021. 12. 5.
[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] 오라클 KEEP 사용방법 KEEP 단어에서 풍기는 의미처럼 정렬을 통해 나온 값을 KEEP(유지) 해놓고 해당 ROW의 다른 컬럼을 출력하고 싶을 때 사용하는 함수입니다. KEEP 은 주로 단독으로 사용하기 보다는 FIRST, LAST 와 함께 사용합니다. 즉 FIRST, LAST의 기준에 따라 MAX, MIN의 의미를 부여할 수 있습니다. 예를 들면, "쇼핑몰 상품 중 가장 비싼 상품의 가격은? " 이렇게 할 경우 단순히 GROUP BY, MAX()를 사용하면 결과가 나옵니다. "쇼핑몰 상품 중 가장 비싼 상품의 이름은?" 이런 경우 가격 MAX를 한다음 서브쿼리나 다른 방법으로 이름을 가져와야 합니다. 이럴 경우 KEEP 문법을 통해 한번에 찾아올 수 있습니다. 사용예 SELECT MIN(NAME) KEEP ( DENSE_R.. 2020. 4. 1.
[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.