티스토리 뷰

TEMP 테이블

지난 SQL 포스팅에서는 오라클 날짜 함수에 대해 알아보았다. 이번에는 그룹 함수에 대해 알아보자. 그룹 함수는 이제까지 살펴본 함수와 달리 행들의 집합에 대해 연산을 한 결과를 하나의 ROW로 반환한다. 그렇다고 해서 항상 하나의 ROW가 나오는 것은 아니다. 행들의 집합들에 대해 연산하면 행들의 집합 수 만큼 결과 ROW 가 나온다.

그룹 함수

분류 함수 기능
그룹 함수 COUNT 그룹지어진 행들의 수를 반환한다.
MIN 그룹지어진 행들의 최소값을 반환한다.
MAX 그룹지어진 행들의 최대값을 반환한다.
SUM 그룹지어진 행들의 합계를 반환한다.
AVG 그룹지어진 행들의 평균을 반환한다.
STDDEV 그룹지어진 행들의 표준편차를 반환한다.
VARIANCE 그룹지어진 행들의 분산을 반환한다.

COUNT

SELECT COUNT(*)
     , COUNT(1)
  FROM TEMP;

-- COUNT 함수에는 어떤 형의 컬럼도 올 수 있다.
-- NULL 값이 들어갈 가능성이 없는 컬럼을 함수 안에 넣는다면 *를 넣는 것과 동일 하다.
-- NULL 값은 결과에 포함되지 않는다.
SELECT COUNT(EMP_ID)
     , COUNT(HOBBY)
  FROM TEMP;

-- 그룹을 지어준 직급 단위로 ROW가 반환된다.
SELECT LEV
     , COUNT(*)
     , COUNT(HOBBY)
  FROM TEMP
 GROUP BY LEV;

-- LEV가 '과장' 이면서 SALARY 가 40000000 이상인 카운트
SELECT COUNT(*)
  FROM TEMP
 WHERE LEV = '과장'
   AND SALARY >= 40000000;

MIN

-- 제일 빠른 사번
SELECT MIN(EMP_ID)
  FROM TEMP;

-- 직급별 제일 빠른 사번
SELECT LEV
     , MIN(EMP_ID)
  FROM TEMP
 GROUP BY LEV;

MAX

-- 직급별 제일 느린 사번
SELECT LEV
     , MAX(EMP_ID)
  FROM TEMP
 GROUP BY LEV;

SUM, AVG

-- 직급별 연봉의 합, 평균, 카운트
-- 평균에서의 NULL과 0은 완전히 다르다
-- AVG = SUM/COUNT 로 구해지는데 COUNT에서 제외가 되어 AVG 값이 달라진다.
-- NULL 값에 유의 해야 한다.
SELECT LEV
     , SUM(SALARY)
     , AVG(SALARY)
     , COUNT(1)
  FROM TEMP
 GROUP BY LEV;

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함