함수 (2) - 그룹 함수 (23.05.17)

·2023년 5월 17일
0

Oracle

목록 보기
5/15
post-thumbnail

💡 그룹(GROUP) 함수

하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등의 하나의 결과 행으로 반환하는 함수


✏️ SUM(숫자가 기록된 컬럼명)

합계

SELECT SUM(SALARY) FROM EMPLOYEE;

-- 부서 코드가 'D9'인 직원들의 급여 합
SELECT SUM(SALARY) FROM EMPLOYEE
WHERE DEPT_CODE = 'D9';

✏️ AVG(숫자가 기록된 컬럼명)

평균

SELECT ROUND( AVG(SALARY) ) FROM EMPLOYEE;

✏️ MIN(컬럼명)

최소값

✏️ MAX(컬럼명)

최대값
-> 타입 제한 없음 (숫자 : 대/소, 날짜: 과거/미래, 문자열 : 문자 순서)

-- EMPLOYEE 테이블에서 가장 낮은 급여
-- 가장 빠른 입사일
-- 알파벳 순서가 가장 빠른 이메일
SELECT MIN(SALARY), MIN(HIRE_DATE), MIN(EMAIL)
FROM EMPLOYEE;
-- 그룹 함수는 여러 개를 동시 작성 가능한데
-- 이때 결과는 실제 테이블 한 행이 아니고
-- 각 그룹 함수 별 독립된 결과

-- 사번이 200이 아닌 사람들 중에서
-- EMPLOYEE 테이블에서 가장 높은 급여,
-- 가장 늦은 입사일,
-- 알파벳 순서가 가장 늦은 이메일
/*3*/SELECT MAX(SALARY), MAX(HIRE_DATE), MAX(EMAIL)
/*1*/FROM EMPLOYEE
/*2*/WHERE EMP_ID != 200;

✏️ COUNT(* | 컬럼명)

행의 개수를 헤아려서 리턴

COUNT ([DISTINCT] 컬럼명)

: 중복을 제거한 행 개수를 헤아려서 리턴

COUNT (*)

: NULL을 포함한 전체 행 개수를 리턴

COUNT(컬럼명)

: NULL을 제외한 실제 값이 기록된 행 개수를 리턴함

-- EMPLOYEE 테이블 전체 행의 개수 == 전체 직원 수
SELECT COUNT(*) FROM EMPLOYEE;

-- DEPT_CODE가 NULL이 아닌 행의 개수
SELECT COUNT(*) FROM EMPLOYEE
WHERE DEPT_CODE IS NOT NULL;

-- COUNT(컬럼명) : NULL을 제외한 실제 값이 기록된 행 개수를 리턴함
SELECT COUNT(DEPT_CODE) FROM EMPLOYEE;

-- EMPLOYEE 테이블에 있는 부서 개수
SELECT COUNT(DISTINCT DEPT_CODE) FROM EMPLOYEE;

-- EMPLOYEE 테이블의 남자 직원 수 조회
SELECT COUNT(*) FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) = '1';

SELECT COUNT(
    CASE
        WHEN SUBSTR(EMP_NO, 8, 1) = '1' THEN '남자'
    END) 남자
FROM EMPLOYEE;

SELECT SUM(DECODE(SUBSTR(EMP_NO, 8, 1), '1', 1)) FROM EMPLOYEE;
profile
풀스택 개발자 기록집 📁

0개의 댓글