고래씌

[Oracle] 2-7. DML(SELECT) - 함수 (그룹 함수) 본문

Database/Oracle

[Oracle] 2-7. DML(SELECT) - 함수 (그룹 함수)

고래씌 2023. 11. 24. 12:32

1. 그룹함수

- 그룹함수 : 데이터들의 합(SUM), 평균(AVG), ...

- N개의 값을 읽어서 그룹별로 결과를 반환(하나의 그룹별로 함수실행후 결과 반환)

 

EMPLOYEE 테이블

 

2. SUM(숫자타입컬럼)

: 컬럼값들의 총 합계를 반환해주는 함수

 

▶ 전체 사원들의 총 급여 합계

 

 

부서코드가 D5인 사원들의 총 급여 합계

 

 

▶ 남자 사원들의 총 급여 합계

 

 

2. AVG 

AVG(숫자타입컬럼)

: 해당컬럼값들의 평균을 구해서 반환

 

 

 

 

3. MIN(ANY타입컬럼)

: 해당컬럼값들 중에서 가장 작은값을 반환

 

 

▶ 전체 사원들 중 최저급여, 가장 작은 이름, 가장 작은 이메일 값, 가장 과거에 입사한 날짜

 

 

4. MAX(ANY타입컬럼)

가장 큰 값을 반환

 

▶ 전체 사원들 중 최고급여, 가장 큰 이름, 가장 큰 이메일 값, 가장 최근에 입사한 날짜

 

 

5. COUNT

- COUNT(*/컬럼이름/DISTINCT 컬럼이름) : 조회된 행의 개수를 세서 반환

- COUNT(*) : 조회 결과에 해당하는 모든 행의 개수를 세서 반환
- COUNT(칼럼이름) : 제시한 컬럼값이 "NULL"이 아닌 것만 세서 개수를 반환
- COUNT(DISTINCT 칼럼이름) : 제시한 컬럼값이 중복값이 있을 경우 하나로만 개수를 세서 반환, NULL 값을 포함시키지 않는다.

 

 

▶ 전체 사원수 조회

 

 

▶ 여자 사원수만 조회

- 방법 ①

 

 

- 방법 ②

 

☞ SUBSTR(EMP_NO,8,1) 이 값이 2면 1을, 아니면 NULL값 반환

COUNT 함수NULL값이 들어간 경우 개수를 세지 않는다.

 

 

 

 

▶ 부서배치가 완료된 사원의 수

DEPT_CODE가 NULL이라면 부서배치를 받지 않은 상태

 

☞ 2번째 방법에 코드여도 같은 값이 출력된다. NULL이 아닌 값만 COUNT가 계산하여 똑같이 출력되는 것.

☞ 2번째 방법 코드로 작성하는 것이 좋다!

 

▶ 부서배치가 완료된 여자 사원 수

 

 

▶ 현재 사원들이 속한 부서의 개수

 

※ 실습문제

 EMPLOYEE테이블에서 직원명, 부서코드, 생년월일, 나이 조회.
단, 생년월일은 주민번호에서 추출하여 00년 00월 00일로 출력되게 하며
나이는 주민번호에서 출력해서 날짜데이터로 변환한 다음 계산하시오