SQL 다중행 함수

천소진·2022년 11월 9일
0

Study

목록 보기
15/29

다중행 함수(복수행 함수)

: 여러 행을 입력해서 하나의 행으로 결과를 출력.
: 단일행 함수와 함께사용 할수 없음.

집계함수
그룹함수
윈도우함수

1. 집계함수

: COUNT, AVG, SUM, MIN, MAX 등
: NULL 값을 알아서 제거하는 기능이 들어있다.

  • SUM : 지정한데이터의 합을 반환
ex) 중복제거한 급여의 합, 급여합

select SUM(distinct sal), SUM (all sal), SUM(sal) from emp ;  

//  알아서 null을제외하고 계산하므로 sum(all sal)의 값과 sum(sal)의 값 동일 
  • COUNT : 지정한 데이터의 개수를 반환.
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;
  • MAX : 지정한 데이터중 최대값 반환.
  • MIN : 지정한 데이터중 최소값 반환.
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;
  • AVG : 지정한 데이터의 평균값 반환.
ex)급여 평균 구하기 
select AVG(sal) from emp;     //all sal과 같은 값 따로 써주지 않아도 all이 생략되어있음.

2. 그룹함수

: 순서에 맞게 작성해야하며, 그룹으로 묶을 기준이 되는 열을 지정해줘야함.

  • GROUP BY
    select (그룹절에 있는 컬럼명을 지정)
    from
    where
    group by ( 그룹지을 열 지정, 여러개 가능)
    order by ( 정렬할 기준이 되는 열 지정)

ex)부서번호 및 직책별 평균 급여 출력 = 부서별,직책별 평균급여
select deptno, job, avg(sal) from emp
GROUP BY deptno, job
order by deptno , job;

  • HAVING :그룹절에 조건을 주어 제한.==> 그룹화된 결과중에서 선별하기위한 조건으로 별칭을 쓸수 없다.
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  학년별, 반별 합계 

0개의 댓글