위로
아래
복수행 함수 (그룹 함수)
- SELECT 문에서 GROUP BY절에 정의된 컬럼을 기준으로 ROW를 그룹화시켜서 복수행 함수를 적용하면, 그룹당 하나의 결과를 출력.
- 복수행 함수는 SELECT절, 또는 HAVING 절에 사용 (WHERE 절에 조건을 주면 오류 난다. HAVING 이용)
- GROUP BY절에는 복수행 함수를 적용할 컬럼을 정의해야 한다.
- HAVING 절은 그룹의 값을 제한하기 위해 사용
- NULL값을 가진 컬럼은 계산할 때 생략
COUNT ()
조건에 만족하는 모든 행의 수를 표시
--질문 temp 테이블의 행의 수
SELECT COUNT(*)
FROM temp;
--질문 부서별 급여의 평균을 출력하는데 각 부서에 인원이 4명 이상인 경우만 출력
SELECT AVG(sal), deptno
FROM emp
GROUP BY deptno
HAVING COUNT(deptno)>=4;
--질문 temp 테이블의 사원번호의 수와 취미의 수를 출력
SELECT COUNT(emp_id) AS 사원번호, COUNT(hobby) AS 취미
FROM temp;
--질문 temp 테이블의 직급별로 인원수 세어보기
SELECT lev 직급, COUNT(lev) 인원수
FROM temp
GROUP BY lev;
SUM()
조건에 만족하는 모든 행의 합계
--질문 조건에 만족하는 모든 행의 합계
SELECT SUM(sal)
FROM emp;
AVG()
- 조건에 만족하는 모든 행의 평균
- NULL값을 가진 컬럼은 계산할 때 생략되므로, 전체 개수에 영향을 줄 수 있어서, nvl()함수를 이용해 중첩시켜주어야 한다.
--질문 조건에 만족하는 모든 행의 평균
SELECT AVG(sal)
FROM emp;
--질문 comm의 값이 NULL이면 0으로 대체하고나서 평균을 구한다
SELECT AVG(NVL(comm,0))
FROM emp;
--질문 부서별 평균 급여액
SELECT AVG(sal), deptno
FROM emp
GROUP BY deptno;
MAX(), MIN()
조건에 만족하는 최대값, 최소값을 보여준다.
--질문 emp 테이블에서 가장 큰 sal과 가장 작은 sal은?
SELECT MAX(sal), MIN(sal)
FROM emp;
--질문 최근 입사한 사원과 가장 오래된 사원의 입사날짜 차이
SELECT MAX(hiredate) - MIN(hiredate)
FROM emp;
--질문 직급별로 가장 빠른 사번을 출력
SELECT lev, MIN(emp_id)
FROM temp
GROUP BY lev;
STDDEV(), VARIANCE()
표준편차와 분산값
--질문 sal의 표준편차와 분산 값을 출력
SELECT STDDEV(sal), VARIANCE(sal)
FROM emp;