25. 그룹 함수

SUM() 합, AVG() 평균, COUNT() 카운트, MAX() 최댓값, MIN() 최솟값, VERIENCE() 분산, STDDEV() 표준편차

 

※ 그룹 함수의 가장 큰 특징

처리해야 할 데이터들 중 null이 존재한다면(포함되어 있다면) null은 제외한 상태로 연산을 수행 즉, 그룹 함수가 작동하는 과정에서 null은 연산의 대상에서 제외된다.

 

SUM() 합

총합을 조회

SELECT SUM(SAL)
FROM EMP
--==>> 29025

 

COUNT()

행(레코드)의 갯수 조회 → 데이터가 몇 건인지 확인

SELECT COUNT(ENAME)
FROM EMP;
--==>> 14

SELECT COUNT(COMM) -- COMM 컬럼 행의 갯수 조회 → NULL은 제외!!
FROM EMP;
--==>> 4

SELECT COUNT(*)
FROM EMP;
--==>> 14          -- NULL을 포함해서 샐 경우 이렇게 한다.

 

AVG()

평균 반환

SELECT SUM(SAL) / COUNT(SAL) "RESULT1"          -- 2073.214285714285714285714285714285714286
     , AVG(SAL) "RESULT2"                       -- 2073.214285714285714285714285714285714286
  FROM EMP;

SELECT SUM(COMM) / COUNT(COMM) "RESULT3"           -- 550
		 , AVG(COMM) "RESULT4"                         -- 550
     , SUM(COMM) / COUNT(*) "RESULT5"              -- 157.142857142857142857142857142857142857
  FROM EMP;

※ 데이터가 NULL 인 컬럼의 레코드는 연산 대상에서 제외되기 때문에 주의하여 연산 처리해야 한다.

(RESULT3와 RESULT4는 잘못된 연산 RESULT5처럼 해야 한다)

 

VARIANCE(), STDDEV(), POWER(), SQRT()

분산, 표준편차, 제곱, 제곱근

※ 표준편차의 제곱이 분산, 분산의 제곱근이 표준편차

SELECT VARIANCE(SAL), STDDEV(SAL)
  FROM EMP;
--==>>
/*
1398313.87362637362637362637362637362637	
1182.503223516271699458653359613061928508
*/

SELECT POWER(STDDEV(SAL), 2) "RESULT1"      -- POWER(A, B) : A의 B제곱
     , VARIANCE(SAL) "RESULT2"
  FROM EMP;
--==>>
/*
1398313.87362637362637362637362637362637	
1398313.87362637362637362637362637362637
*/

SELECT SQRT(VARIANCE(SAL)) "RESULT1"
     , STDDEV(SAL) "RESULT2"
  FROM EMP;
--==>>
/*
1182.503223516271699458653359613061928508	
1182.503223516271699458653359613061928508
*/

 

MAX() / MIN()

최대값 최솟값

SELECT MAX(SAL) "RESULT1"
     , MIN(SAL) "RESULT2"
  FROM EMP;
--==>> 5000 800

※ 주의

SELECT ENAME, SUM(SAL)
  FROM EMP;
--==>>에러 발생
-- (ORA-00937: not a single-group group function)

 

이럴 때 사용하는 게 GROUP BY

SELECT DEPTNO, SUM(SAL)
  FROM EMP
GROUP BY DEPTNO;
--==>>
/*
30	9400
20	10875
10	8750
*/

※ 파싱순서에서 GROUP BY가 SELECT 보다 먼저이기에 이렇게 가능한 것이다.

 

 

 

 

 

 

 

 


https://www.instagram.com/p/CaeQxTcJ-IB/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

27. CUBE  (0) 2022.03.12
26. ROLLUP, GROUPING  (0) 2022.03.12
24. RANK()  (0) 2022.03.12
23. VIEW  (0) 2022.03.12
22. CASE 구문(조건문, 분기문)  (0) 2022.03.12