: 여러 행을 입력해서 하나의 행으로 결과를 출력.
: 단일행 함수와 함께사용 할수 없음.
집계함수
그룹함수
윈도우함수
: COUNT, AVG, SUM, MIN, MAX 등
: NULL 값을 알아서 제거하는 기능이 들어있다.
ex) 중복제거한 급여의 합, 급여합
select SUM(distinct sal), SUM (all sal), SUM(sal) from emp ;
// 알아서 null을제외하고 계산하므로 sum(all sal)의 값과 sum(sal)의 값 동일
ex) 부서번호가 30번인 사람들의 수
select COUNT(*)from emp where deptno=30;
ex)
select COUNT(comm) from emp ;
|| ==> 결과값동일
select COUNT(comm) from emp where comm is not null;
ex)10번 부서 직월들 급여중 최대값과 최소값 구하기.
select MAX(sal)from emp where deptno =10;
select MIN(sal)from emp where deptno =10;
ex) 가장 최근입사직원과 가장먼저 입사한직원 구하기.
select MAX(hiredate) from emp where deptno = 20; // 가장 최근입사일을 MAX로 지정.(숫자로 본다면 가장 큰값이기때문)
select MIN(hiredate) from emp where deptno = 20;
ex)급여 평균 구하기
select AVG(sal) from emp; //all sal과 같은 값 따로 써주지 않아도 all이 생략되어있음.
: 순서에 맞게 작성해야하며, 그룹으로 묶을 기준이 되는 열을 지정해줘야함.
ex)부서번호 및 직책별 평균 급여 출력 = 부서별,직책별 평균급여
select deptno, job, avg(sal) from emp
GROUP BY deptno, job
order by deptno , job;
ex) 부서번호 및 직책별 평균 급여가 500 이상인 그룹 출력
select deptno, job, avg(sal) from emp
group by depyno, job having avg(sal)>=500
order by deptno,job;
!!!!! WHERE 절과 비교
같은점 : 지정한 조건식이 참인 결과만 출력
다른점 : WHERE은 SELECT 절을 대상으로 하고, 출력되는 행을 제한
HAVING은 GRUOP BY 절을 제한하며, 그룹화된 대상자체의 출력을 제한함.
!!!!! GRUOP BY절에서만 쓸수 있는 옵션 함수 (그룹이 두개이상일때)
ROLLUP( 우선순위그룹, 차순위그룹)
: 소그룹간의 합계를 계산. 그룹으로 묶은 각각의 소그룹 합계와 전체 합계를 모두 구해줌.
: 처음에 명시한 컬럼에 대해서만 합계를 구하므로 우선순위로 두는 컬럼을 앞에 써줘야함.
CUBE
: 항목들 간의 다차원적인 소계.
: 명시한 모든 컬럼에 대한 소그룹 합계를 모두 구해줌.
ex) rollup 학년별 합계
cube 학년별, 반별 합계