-- ※ 그룹 함수의 가장 큰 특징은
-- 처리해야 할 데이터들 중 NULL이 존재하면
-- 이 NULL 은 제외하고 연산을 수행한다는 것이다 .
-- ■■■ 그룹 함수 ■■■
--- SUM() 합 , AVG()평균, COUNT() 카운트, MAX() 최대값 , MIN() 최소값
--VARIANCE() 분산 , STDDEV() 표준편차
-- ※ 그룹 함수의 가장 큰 특징은
-- 처리해야 할 데이터들 중 NULL이 존재하면
-- 이 NULL 은 제외하고 연산을 수행한다는 것이다 .
-- ●SUM()
--EMP 테이블을 대상으로 전체 사원들의 급여 총합을 조회한다.
SELECT SAL,SUM(SAL)
FROM EMP;
--===>> 오류뜸
SELECT SUM(SAL)
FROM EMP;
--==>>29025
SELECT SUM(COMM)
FROM EMP;
--==>> 2200 (NULL 값이 존재함에도 그것을 제외하고 연산해서 결과 반환)
--● COUNT()
--행의 갯수 조회하여 결과값 반환
SELECT COUNT(ENAME)
FROM EMP;
--==>>14
SELECT COUNT(COMM)
FROM EMP;
--===>>4 (NULL이 들어있는 레코드를 제외하고 카운트해준다)
--따라서 일반적으로 레코드 수를 계산하기 위해서는 특정 컬럼을 지정해서 하는 것이 아니라 아래와 같이 함
SELECT COUNT(*)
FROM EMP;
--==>>14
--● AVG()
-- 평균 반환
SELECT SUM(SAL) / COUNT(SAL)"1", AVG(SAL) "2"
FROM EMP;
--==>>2073.214285714285714285714285714285714286
--2073.214285714285714285714285714285714286 (둘 다 똑같이 나온다.)
SELECT AVG(COMM)
FROM EMP;
--==>>550 → 직원들의 수당 평균
SELECT SUM(COMM) / COUNT(COMM)
FROM EMP;
SELECT SUM(COMM) / COUNT(*)
FROM EMP;
--==>>157.142857142857142857142857142857142857
-- 사실 이게 맞는 값이다.
--※ 표준편차의 제곱이 분산
-- 분산의 제곱근이 표준편차
SELECT AVG(SAL), VARIANCE(SAL), STDDEV(SAL)
FROM EMP;
--2073.214285714285714285714285714285714286
--1398313.87362637362637362637362637362637
--1182.503223516271699458653359613061928508
SELECT POWER(STDDEV(SAL),2), VARIANCE(SAL)
FROM EMP;
--==>>1398313.87362637362637362637362637362637 1398313.87362637362637362637362637362637 (둘값이같다)
SELECT SQRT(VARIANCE(SAL)), STDDEV(SAL)
FROM EMP;
--1182.503223516271699458653359613061928508
--1182.503223516271699458653359613061928508
-- ● MAX() MIN()
--최대값과 최소값을 반환하게 되는 함수이다
SELECT MAX(SAL), MIN(SAL)
FROM EMP;
--==>>5000 800
-- ※ 주의할 것!!
--SELECT ENAME, SUM(SAL)
---FROM EMP;
--==>> "not a single-group group function"
--=>> 에러발생
--SELECT DEPTNO, SUM(SAL)
--FROM EMP;
--==>> 에러발생
SELECT DEPTNO, SUM(SAL)
FROM EMP
GROUP BY DEPTNO
ORDER BY DEPTNO;
--===>>
/*
10 8750
20 10875
30 9400*/
SELECT DEPTNO "부서번호", SUM(SAL) "급여합"
FROM EMP
GROUP BY ROLLUP(DEPTNO);
/*
10 8750
20 10875
30 9400
(NULL) 29025*/ --→ 전체 합까지 나온다.
'📚Study Note > ORACLE' 카테고리의 다른 글
[ORACLE ] ROLLUP() CUBE() GROUPING SETS() (0) | 2021.03.31 |
---|---|
[ ORACLE ] GROUP BY GROUP BY ROLLUP() GROUPING() (0) | 2021.03.31 |
[ ORACLE ] RANK() DENSE_RANK() (0) | 2021.03.31 |
[ ORACLE ] SUB_QUERY, CREATE AND REPLACE 'VIEW' (0) | 2021.03.30 |
[ ORACLE ] CASE 구문(조건문, 분기문 ) / CASE WHEN THEN ELSE END 구문 DECODE() (0) | 2021.03.30 |