본문 바로가기
SQL(Oracle)/Oracle 이론 정리

[Oracle] 정규식 함수/그룹함수

by ProSeraphina 2020. 8. 10.

#정규식 함수

^   시작문자   ^A(=A%) : A로 시작
$   끝문자   A$(=%a) : A로 끝남
.   임의의 문자(모든 문자)  
*    여러문자, 0문자   [A-Z]* : 대문자 알파벳이 여러개 존재하거나 없다
+   한 글자 이상  
[]   해당 문자   [AB] : A or b
  [가-힣] : 한글 전체
  [A-Za-z] : 알파벳 전체
[^]   제외   [^A] : A를 제외

 

#그룹함수(=집합함수, 복수행함수)

  :컬럼명이나 단일행함수를 같이 사용하면 안됨. 단, GROUP BY를 이용하면 사용 가능

COUNT(*) : NULL값 포함 
  →Java에서 반드시 이걸로 사용

COUNT(컬럼명)
: NULL값 제외
  로그인, ID 중복체크 →HTML 활용 실습 참고
  SELECT deptno, COUNT(*) FROM emp; 오류(∵컬럼명과 복수행함수 같이 사용)
  SELECT deptno, job, COUNT(*) FROM emp GROUP BY (deptno, job)
  ORDER BY deptno ASC; →deptno로 그룹 나누고 그 안에서 job으로 다시 나눔 
MAX : 최대값   자동 증가번호 부여
  INSERT INTO emp(empno,ename) VALUES((SELECT MAX(empno)+1
  FROM emp),'홍길동');  →emp파일에 empno, ename값을 넣는데, 각각에
    '기존 empno중 가장 큰 값에 1을 더한 값'과 '홍길동'을 넣어라
MIN : 최소값   SELECT MIN(sal), ROUND(AVG(sal),2), SUM(sal) FROM emp;
  +)표준편차, 분산: SELECT STDDEV(sal),VARIANCE(sal) FROM emp;
AVG : 평균
SUM : 합
ROLLUP : ROW 계산   SELECT deptno, job, COUNT(*), ROUND(AVG(sal),2) FROM emp 
  GROUP BY ROLLUP(deptno,job); 
CUBE : ROW 계산후
  나온 COLUMN값까지 계산
  SELECT deptno, job, COUNT(*), ROUND(AVG(sal),2) FROM emp 
  GROUP BY CUBE(deptno,job); → ROLLUP+전체통계([그림] 참고)
RANK() OVER (ORDER
BY 컬럼명 ASC | DESC)
 : 공동순위 처리,
DENSE_RANK() OVER
 : 공동순위 무시
  SELECT ename,sal,RANK() OVER(ORDER BY sal) 
  AS rank FROM emp; → 1등 1등 3등 순
  SELECT ename,sal,DENSE_RANK() OVER(ORDER BY
  sal DESC) as rank FROM emp; → 1등 1등 2등 순
REGEXP_LIKE
 : 찾을 단어가 여러 개일 때
  검색
  SELECT ename FROM emp WHERE REGEXP_LIKE(ename,'A|B|C');
  =SELECT ename FROM emp WHERE ename LIKE '%A%' OR ename
    LIKE '%B%' OR ename LIKE '%C%';

 

[그림]CUBE
끝.

'SQL(Oracle) > Oracle 이론 정리' 카테고리의 다른 글

[Oracle] SEQUENCE  (0) 2020.08.24
[Oracle] JOIN  (0) 2020.08.12
[Oracle] 단일행 함수  (1) 2020.08.06
[Oracle] SELECT / WHERE / GROUP BY / HAVING / ORDER BY  (0) 2020.08.05
[Oracle] 연산자 / 집합연산자  (0) 2020.08.05

댓글