Database/Oracle

[Oracle] 함수(FUNCTION)_그룹 함수

21종 2023. 7. 5. 19:55

< 그룹함수 >


1. SUM(숫자타입 컬럼) : 해당 컬럼 값들의 총 합계를 구해서 반환해주는 함수

-- EMPLOYEE 테이블의 전 사원의 급여합
SELECT SUM(SALARY)
FROM EMPLOYEE;  -- 전체 사원이 한 그룹으로 묶임

 

-- 남자 사원들의 총 급여 합
SELECT SUM(SALARY) --3
FROM EMPLOYEE -- 1 
WHERE SUBSTR(EMP_NO,8,1) IN ('1','3'); --2

 

-- 부서코드가 D5인 사원들의 총 연봉 합
SELECT SUM(SALARY * 12)
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5';


2. AVG(숫자타입) : 해당 컬럼값들의 평균값을 구해서 반환

SELECT ROUND(AVG(SALARY))
FROM EMPLOYEE;


3. MIN(여러타입) : 해당 컬럼값들 중에 가장 작은 값 구해서 반환

SELECT MIN(EMP_NAME), MIN(SALARY), MIN(HIRE_DATE)
FROM EMPLOYEE;


4. MAX(여러타입) : 해당 컬럼값들 중에 가장 큰 값 구해서 반환

SELECT MAX(EMP_NAME), MAX(SALARY), MAX(HIRE_DATE)
FROM EMPLOYEE;


5. COUNT(*|컬럼|DISTINCT 컬럼) : 조회된 행 개수를 세서 반환

--  COUNT(*) : 조회된 결과의 모든 행 개수를 세서 반환
--  COUNT(컬럼) : 제시한 해당 컬럼값이 NULL이 아닌것만 행 개수 세서 반환
--  COUNT(DISTINCT 컬럼) : 해당 컬럼값 중복을 제거 한 후 행 개수 세서 반환

-- 전체사원수
SELECT COUNT(*)
FROM EMPLOYEE;

 

-- 여자사원수
SELECT COUNT(*) -- 3
FROM EMPLOYEE   -- 1
WHERE SUBSTR(EMP_NO,8,1) IN ('2','4'); -- 2

 

-- 보너스를 받는 사원수
-- 1번 방법.
SELECT COUNT(*)
FROM EMPLOYEE
WHERE BONUS IS NOT NULL;

-- 2번 방법.
SELECT COUNT(BONUS) -- 컬럼이 NULL이 아닌것만 카운팅함
FROM EMPLOYEE;

1번 방법.
2번 방법.

 

-- 부서배치를 받은 사원 수
SELECT COUNT(DEPT_CODE)
FROM EMPLOYEE;

 

-- 현재 사원들이 몇개의 부서에 분포되어있는지
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE;