# 주요 그룹 함수
그룹 함수는 NULL 값을 계산하지 않는다!
- SUM
- AVG > NULL을 제외하므로 결과 값이 달리질 수 있다
- MIN > ANY 타입 가능
- MAX > ANY 타입 가능
- COUNT
# SUM ( [DISTINCT] expr)
> 필요에 따라서 이렇게 표현식을 만들 수 있다
# AVG
> AVG 는 NULL을 고려하지 않으므로 결과값이 달라질수 있다
그래서 AVG(NVL(COL, 0)) 등과 같은 처리 고려해야 한다
# MIN / MAX
# COUNT
Result Set을 세는 것이 일반적이다
그룹 함수를 잘 활용하려면 GROUP BY를 잘 활용해야 한다
구문의 parsing 순서는 다음과 같다
SELECT -- 5
FROM -- 1
WHERE -- 2
GROUP BY -- 3
HAVING -- 4
GROUP BY 절과 함께 사용하려면 GROUP BY 절이 아닌 일반 절을 가져올 수 없다
SELECT DEPT_ID
, MIN(SALARY)
, MAX(SALARY)
, SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_ID;
SELECT 절에 기술한 컬럼 중, 그룹 함수에 사용되지 않은 컬럼은 GROUP BY 절에 반드시 기술되어야 함
반대로 GROUP BY 절로 사용한 것들은 SELECT 절에 사용할 수 있다
-- 표현식을 통해 GROUP BY 묶기
SELECT DECODE(SUBSTR(EMP_NO, 8, 1),
'1', '남', '3', '남', '여') AS 성별
, ROUND(AVG(SALARY), -4) AS 평균급여
FROM EMPLOYEE
GROUP BY DECODE(SUBSTR(EMP_NO, 8, 1),
'1', '남', '3', '남', '여')
ORDER BY 2;
GROUP BY를 여러 개 활용하여 묶으면 COMPOSITE KEY가 되는 것
ROLLUP() 함수 활용시 각 그룹별 합계에 대해서 재정리
-- COMPOSITE GROUP BY
-- ROLLUP
SELECT EMP_NAME, DEPT_ID, COUNT(*)
FROM EMPLOYEE
GROUP BY ROLLUP( EMP_NAME, DEPT_ID);
GROUP BY HAVING 절
ORDER BY COLUMN 정렬기준
CF. DATA MODELING
다대다 관계 / 정규화 두 가지의 모델링
'Archived(CSE Programming) > SQL(Oracle)' 카테고리의 다른 글
SQL_SET_SubQuery (0) | 2020.01.22 |
---|---|
SQL_JOIN (0) | 2020.01.21 |
SQL_Additional_SELECT_단일 행 함수 (0) | 2020.01.20 |
SQL_SELECT (0) | 2020.01.20 |
SQL_DB의 기본 (0) | 2020.01.20 |