고래씌
[Oracle] 2-7. DML(SELECT) - 함수 (그룹 함수) 본문
1. 그룹함수
- 그룹함수 : 데이터들의 합(SUM), 평균(AVG), ...
- N개의 값을 읽어서 그룹별로 결과를 반환(하나의 그룹별로 함수실행후 결과 반환)
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일로 출력되게 하며
나이는 주민번호에서 출력해서 날짜데이터로 변환한 다음 계산하시오
'Database > Oracle' 카테고리의 다른 글
[Oracle] 4-1. DML(SELECT) - JOIN ① (INNER JOIN) (0) | 2023.11.24 |
---|---|
[Oracle] 3. DML(SELECT) - GROUP BY & HAVING, 집합연산자 (0) | 2023.11.24 |
[Oracle] 2-6. DML(SELECT) - 함수_단일행 함수 ⑥ (선택 함수) (1) | 2023.11.24 |
[Oracle] 2-5. DML(SELECT) - 함수_단일행 함수 ⑤ (NULL 처리 함수) (0) | 2023.11.24 |
[Oracle] 2-4. DML(SELECT) - 함수_단일행 함수 ④ (형변환 함수) (0) | 2023.11.24 |