728x90
반응형
집계 함수는 여러 행들의 그룹이 모여서 단 하나의 결과를 돌려주는 함수를 말하는 것!
그래서 크게 어떤 데이타를 어떤 기준으로 묶을 때 우리는 집계 함수를 쓰게 된다.
GROUP BY 함수
- Group by 절은 행들을 소그룹화한다.
- SELECT 절 / HAVING 절 / ORDER BY 절에 사용할 수 있다.
예시 ) 케이리그 선수들의 포지션별 평균키는 어떻게 되는가? 란 요구사항에 맞는 쿼리
SELECT POSITION AS 포지션, AVG ( HEIGHT) AS 평균키
FROM PLAYER
GROUP BY 포지션
HAVING AVG ( HEIGHT) >= 180
CASE 표현을 활용한 월별 데이터 집계
집계함수 ( CASE () ~ GROUP BY ) 기능은 반복되는 칼럼을 이제 구분용 칼럼을 통해서 여러 개의 레코드로 만들 수 잇는 것.
집합을 정해진 칼럼 수만큼 확장해 집계 보고서를 만드는 유용한 기법임.
SELECT ENAME AS 사원명, DEPTNO AS 부서번호,
CASE MONTH WHEN 1 THEN SAL END AS MO1 ,
CASE MONTH WHEN 2 THEN SAL END AS MO2 ,
CASE MONTH WHEN 3 THEN SAL END AS MO3 ,
CASE MONTH WHEN 4 THEN SAL END AS MO4 ,
CASE MONTH WHEN 5 THEN SAL END AS MO5 ,
CASE MONTH WHEN 6 THEN SAL END AS MO6
FROM ( SELECT ENAME, DEPTNO, EXTRACT ( MONTH FROM HIREDATE) AS MONTH, SAL FROM EMP) ;
이런식으로 각 월별로 CASE MO1 , MO2 등의 컬럼을 통해서 결과 값을 보여줄 수 있다.
집계함수와 NULL 처리
- 결과값을 NULL 이 아닌 0 으로 표현하기 위해 NVL 함수 를 사용하는 경우가 많다.
- CASE 를 사용시 ELSE 를 까먹고 안사용하게 되면 ELSE 값이 NULL 이 된다. 따라서 이 경우를 이제 NVL 로 묶어줄 수 있다.
e.g) NVL ( SUM ( CASE POSITION WHEN 'FW' THEN 1 ELSE 0 END), 0 ) AS FW
728x90
반응형
'이유's Programming > DBMS' 카테고리의 다른 글
[ 3- 4] 그룹 소계함수 - 보고서 작성을 훨씬 쉽고 매끄럽게! group by 와 order by 사용 / rollup 과 order by 함수 (0) | 2021.04.22 |
---|---|
다중 행 서브 쿼리 (0) | 2021.04.19 |
[ 4 - 3] 인덱스 종류 (0) | 2021.03.31 |
[ 4 -2 ] 인덱스 스캔 방식 - (0) | 2021.03.25 |
[ 4 -1 ] 인덱스 기본 원리 / Balanced Tree ( B Tree) (4) | 2021.03.24 |