본문 바로가기

Oracle/SQL

SQL 다중행 함수 - 그룹함수 (AVG) 평균값 구하기

AVG (평균 출력)

→ 만약 출력했을때 소수점이 너무많아서 안나오게 하고싶다면 round 둘러준다.

특징

  1. NULL 값이 있을 경우 avg 는 계산할때 NULL 값을 빼고 계산한다. 

→ 그룹함수의 특징이다.

예제 : 우리반 테이블에서 평균 나이를 출력하세요

select round(avg(age),1)
from emp14;

문제 : 직업, 직업별 평균월급 출력

select job, round( avg(sal)) 
from emp 
group by job;

문제 : 커미션을 다 더해서(null 포함) 전체 사원수로 나누게 하려면 ?

select avg(nvl(comm,0)) 
from emp;

설명 : null 값을 0으로 치환하여 평균값을 출력한다.

문제 : class_type , class_type별 평균나이 출력

select class_type, round(avg(age)) 
from emp14 
group by class_type;

부서번호, 부서번호별 평균월급을 출력 , 부서번호별 평균월급을 출력할때 천단위로 출력

select deptno, to_char(avg(sal), '999,999.99')
from emp 
group by deptno;

→ 설명 : 소수점 뽑고싶으면 '. 99' 입력하면 된다.

문제 : 직업, 직업별 평균월급 , 세일즈맨은 제외하고 출력

select job, round(avg(sal)) 
from emp 
where job != 'SALESMAN' 
group by job;

문제 : 통신사, 통신사별 평균나이, 통신사별 평균나이를 출력할때 소수점 이하는 안나오게 반올림, 통신사별 평균나이가 높은것부터 출력 하시오.

select lower(telecom), round(avg(age)) as 평균나이
from emp14
group by lower(telecom )
order by 2 desc ;