본문 바로가기

DB/Oracle

(22)
[Oracle] 분석함수, 윈도함수 - CUBE (소계와 전체 합계 출력) 서론 CUBE( ) : 각 소계와 전체 총계 출력 - 전체 합계까지 보여주기에 집계 컬럼들이 가질 수 있는 모든 경우에 대해 소계(소그룹)을 생성해야 하기에 ROLLUP에 비해 시스템 리소스를 더 사용함 - 컬럼이 N개 일 때, 2^N승의 소계(소그룹) 생성 - 모든 경우에 대한 소계를 구하기에 순서가 바뀌어도 데이터는 같음 ( ROLLUP은 순서 중요 ) - 예제. 부서별 평균 급여와 사원 수, 직급별 평균 급여와 사원 수, 부서와 직급별 평균 급여와 사원 수, 전체 평균 월 급여와 사원 수를 구하라. SELECT deptno, job, ROUND( AVG(NVL(sal, 0)), 1) "avg_sal", COUNT(*) "cnt_emp" FROM emp GROUP BY CUBE(deptno, job)..
[Oracle] 분석함수, 윈도함수 - ROLLUP (기준별 소계 요약) 서론 - 윈도함수 혹은 분석 함수 : 행(row)끼리 연산이나 비교를 쉽게 지원해주기 위한 함수 ROLLUP 함수 : 각 기준별 소계 요약 데이터들에 특정 기준을 주고 모아 합계(집계)를 보는 경우 (ex) 본사에서 월별 매장별 매출 합계를 보는 경우 GROUP BY의 확장 형태 복잡한 SQL을 짧게 만들고, 해당 데이터들을 반복적으로 읽는 것을 최소화해 속도를 빠르게 해줌 계층적 분류를 포함하고 있는 데이터 집계에 적합 ROLLUP( )에 지정된 컬럼들은 소계(소그룹)의 기준이 되는 컬럼임 (ex) 지정 컬럼 수가 N이라고 했을 때, N+1 Level의 소계(소그룹) 생성 지정된 컬럼의 순서가 바뀌면 결과도 바뀌어 컬럼 순서에 주의해야함 세 가지 요구사항으로 분리 가능 (1) 부서와 직업별 평균 급여와..
[Oracle] SQL 복수행 함수 (그룹 함수) - GROUP BY, HAVING, ROLLUP GROUP BY 절 - 그룹으로 묶기 위함 - 만약 그룹 조건이 여러 개일 경우 GROUP BY 절에 이어서 작성하면 됨 예시 1) 부서별 월급 평균을 구하라. SELECT DEPTNO, AVG(NVL(sal, 0)) FROM emp GROUP BY DEPTNO; 예시 2) 부서와 직업별 월급의 평균을 구하라. (단, 부서 번호와 직업에 따라 오름차순으로 정렬하라) SELECT deptno, job, AVG(NVL(sal, 0)) "AVG" FROM emp GROUP BY deptno, job ORDER BY 1, 2; - 주의사항 SELECT 절에 사용된 그룹 함수 이외 컬럼이나 표현식은 반드시 GROUP BY 절에 사용되어야 함. 한 마디로 그룹핑 대상이 아닌 컬럼을 SELECT 절에 작성해서는 안 ..
[Oracle] SQL 복수행 함수(그룹 함수) 그룹(Group) 함수 - 한 번에 여러 건의 데이터가 함수로 입력됨 - * 사용 시, Null 포함 - 컬럼 이름 사용 시, Null 값 제외한 컬럼 작업 COUNT( ) 함수 - 입력 데이터의 총 건수 반환 - * : Null 포함 / 컬럼명 : Null 미 포함 SUM( ) 함수 - 데이터들의 합계 계산 AVG( ) 함수 - Null 값은 자동으로 제외하고 평균 값이 계산됨 - 고로 Null 값을 가진 전체 인원의 평균 계산시 해당 부분을 수정해 다시 조회해야 함 - Null 값을 9으로 대체하는 방법도 있음 [ex] SELECT count(*), sum(comm), avg(nvl(comm, 0)) FROM emp; MAX( ) 함수 / MIN( ) 함수 - MAX : 최댓값 / MIN : 최솟값 ..
[Oracle] 단일행 함수 - 정규식(Regular Expression) (2) ※ 오라클 11g에 추가된 정규식 함수 REGEXP_COUNT 함수 REGEXP_COUNT(컬럼 또는 문자열, '카운트 대상 문자' [, 카운트 시작 위치] [, 정규식 옵션] ) - 특정 문자 카운트 - 카운트 대상 문자를 . (점)으로 할 경우 문자열 길이 카운트 검색 세 가지 방법 SELECT text, REGEXP_COUNT(text, 'aa') "method 1", REGEXP_COUNT(text, '[a]{2}') "method 2" , REGEXP_COUNT(text, '(a)(a)') "method 3" FROM T_REG;
[Oracle] 단일행 함수 - 정규식(Regular Expression) (1) 정규식(Regular Expression) SQL 문장에서도 유닉스에서 사용하는 정규식을 사용해 다양한 검색 가능 정규식(Regular Expression) - 유닉스에서 검색 할 때 주로 사용되는 기술 - 다양한 메타문자들을 사용해 검색 방법을 확장하는 것 이는 오라클 10g 버전부터 추가된 기능 오라클 like 구문 업그레이드 regexp_like 샘플예제 (정규표현식 기본 응용) 오라클에서 제공하는 정규표현식 지원 함수 regexp_like 를 이용하면 기존 like 구문에서 할 수 없었거나 아주 어렵게 구현했던 부분들을 아주 쉽게 구현할 수 있습니다. regexp_like 기본 구문(Syntax) 는 jack-of-all-trades.tistory.com 솔라리스, 리눅스 정규식 예시 ^(캐럿) ..
[Oracle] 단일행 함수 (문자, 숫자, 날짜, 형 변환, 일반) 서론 단일행 함수와 복수행 함수의 차이 다양한 문자/숫자/날짜/형변환/일반 단일행 함수 VS 복수행 함수 단일행 함수 단일 행 함수는 여러 건의 데이터를 한꺼번에 처리하는 것이 아닌 한 번에 하나씩 처리하는 함수 복수행 함수 ( = 그룹 함수) 여러 건의 데이터를 동시에 입력 받아 한 건의 결괏값을 만들어 주는 함수 단일행 함수 함수에 어떤 값이 입력되는지 구분하는 것이 중요함 ▣ 문자 함수 함수명 의미 사용 예 INITCAP 입력 첫 글자만 대문자 변환 공백이 있을 경우 공백 다음을 첫 글자로 판단 INITCAP('abcd') => Abcd INITCAP('sky ju') => Sky Ju LOWER 입력 값 전부 소문자 변환 LOWER('ABCD') => abcd UPPER 입력 값 전부 대문자 변환..
오라클(Oracle) bin$ 으로 시작하는 테이블 삭제 오라클에서 BIN$으로 시작하는 테이블 삭제 : 네이버 블로그 (naver.com) 오라클에서 BIN$으로 시작하는 테이블 삭제 회사 디비에서 테이블을 drop으로 삭제 했을때 테이블이 없어지긴 했는데 BIN$어쩌구저쩌구 테이블이 대... blog.naver.com 요약. purge recyclebin; 일명 휴지통 지우기