일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- spring crud게시판
- jsp 팝업띄우기
- spring crud
- 자바기초
- html기초
- 프로그래머스 MYSQL
- 스프링 crud
- jsp 날짜팝업
- 2020정보처리기사실기정리
- 자바연산자
- 자바배열예제
- 오버라이딩
- 2020정보처리기사실기
- Oracle기초
- 프로그래머스 쿼리문
- 스프링 CRUD게시판
- 정보처리기사실기정리
- jsp게시판만들기
- PLSQL
- 2020정보처리기사실기요약
- 오라클설치
- 날짜지정팝업
- crud게시판
- js datepicker
- CRUD게시판만들기
- 정처기실기정리
- 스프링게시판만들기
- 게시판만들기
- 자바 정규표현식 예제
- 프로그래머스 SQL
Archives
- Today
- Total
영보의 SystemOut.log
[Oracle] SQL 복수행함수 / 그룹함수 / 집합함수 / SQL 함수 예제 본문
반응형
# 복수행 함수(그룹/집합함수) : 한꺼번에 여러 건의 데이터가 함수로 입력됨
함수이름 |
의미 | 예 |
COUNT |
입력되는 데이터의 총 건수를 출력 |
- COUNT(*) : NULL값을 포함 - COUNT(컬럼명) : NULL값을 제외 |
SUM |
입력되는 데이터의 합계 값 구해서 출력 | |
AVG |
입력되는 데이터의 평균값 구해서 출력 | |
MAX |
입력되는 데이터 중 가장 큰 값을 출력 | 최대값 (자동 증가번호) |
MIN |
입력되는 데이터 중 가장 작은 값을 출력 | |
STDDEV |
입력되는 데이터 값들의 표준 편차 값 출력 | |
VARIANCE |
입력되는 데이터 값들의 분산 값 출력 | |
ROLLUP |
입력되는 데이터의 소계값을 자동으로 계산해서 출력 | ROW 단위 계산 => 통계 |
CUBE |
입력되는 데이터의 소계 및 전체 총계를 자동 계산 후 출력 | ROW, COLUMN단위 전체 통계 |
GROUPINGSET |
한 번의 쿼리로 여러 개의 함수들을 그룹으로 수행 가능 | |
RANK |
입력되는 데이터의 그룹에서 값의 순위를 계산한 후 순위 출력 함수 | RANK() OVER(ORDER BY 컬럼명 ASC|DESC) |
DENSE_RANK |
DENSE_RANK() OVER(ORDER BY 컬럼명 ASC|DESC) |
▶ 컬럼이나 단일행 함수를 같이 사용하면 안된다.
단, GROUP BY 를 이용하면 사용이 가능하다
# COUNT, SUM, AVG 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
SELECT COUNT(*), COUNT(mgr), COUNT(comm) FROM emp;
SELECT MAX(sal) "최대급여", MIN(sal) "최소급여", COUNT(*) "사원수", SUM(sal) "급여 총합", AVG(sal) "급여 평균" FROM emp;
-- 10,20,30 -> 별로 인원수, 급여합, 급여 평균
SELECT COUNT(*) , SUM(sal), AVG(sal) FROM emp WHERE deptno=10;
-- 10,20,30 -> 별로 인원수, 급여합, 급여 평균
SELECT COUNT(*) , SUM(sal), AVG(sal) FROM emp WHERE deptno=20;
-- 10,20,30 -> 별로 인원수, 급여합, 급여 평균
SELECT COUNT(*) , SUM(sal), AVG(sal) FROM emp WHERE deptno=30;
-- 10,20,30 -> 별로 인원수, 급여합, 급여 평균
SELECT deptno, COUNT(*) , SUM(sal), AVG(sal) FROM emp GROUP BY deptno;
--입사년도별로 인원수, 급여함, 급여 평균
SELECT SUBSTR(hiredate, 1,2), COUNT(*) , SUM(sal), AVG(sal) FROM emp GROUP BY SUBSTR(hiredate, 1,2);
SELECT TO_CHAR(hiredate,'YYYY'), COUNT(*), SUM(sal), AVG(sal) FROM emp GROUP BY TO_CHAR (hiredate,'YYYY');
--부서별로 급여합, 평균을 구한다
-- => 전체 평균보다 많이 받는 부서만 출력
SELECT deptno, COUNT(*), SUM(sal), AVG(sal) FROM emp GROUP BY deptno HAVING AVG(sal)>(SELECT AVG(sal) FROM emp);
|
cs |
#ROLLBACK, ROLLUP 예제
1
2
3
4
5
6
7
8
9
10
11
12
|
--ROLLBACK;
SELECT ROUND(AVG(sal),2),SUM(sal) FROM emp;
SELECT STDDEV(sal), VARIANCE(sal) FROM emp;
--ROLLUP
SELECT deptno, job, COUNT(*), ROUND(AVG(sal),2) FROM emp GROUP BY deptno, job;
SELECT deptno, job, COUNT(*), ROUND(AVG(sal),2) FROM emp GROUP BY ROLLUP(deptno, job);
SELECT deptno, job, COUNT(*), ROUND(AVG(sal),2) FROM emp GROUP BY CUBE(deptno, job);
|
cs |
반응형
'Database > Oracle' 카테고리의 다른 글
[Oracle] DML / 데이터형 / Oralce 제약조건 (0) | 2020.08.18 |
---|---|
[Oracle] JOIN / EQUI_JOIN / NON_EQUI_JOIN/ JOIN예제 (0) | 2020.08.12 |
[Oracle]Database(Oracle) 데이터 HTML에 출력하기 (0) | 2020.08.11 |
[Oracle] 단일행함수/ 오라클 함수/ 단일행 함수 예제 (0) | 2020.08.07 |
[Oracle] 집합연산자 / 집합연산자 예제 (0) | 2020.08.06 |