
-- 그룹함수 : 하나의 행의 컬럼을 대상이 아닌 행의 그룹의 컬럼들을 묶어 그룹화하고 연산하는 함수 -- SUM, AVG, COUNT, MAX, MIN select sum(sal) as "월 급여 총액", to_char(sum(sal), 'L99,999') as "월 급여 총액2", round(avg(sal)) as "월 급여 평균", count(*) as "사원 수", count(comm) as "커미션을 받는 사원수", -- null은 세지 않는다. 0은 셈 max(sal) as "가장 큰 급여" from emp ; select sum(comm), avg(comm), count(comm), max(comm), min(comm) from emp where comm is not null and comm>0 ; -- 전체행을 구한다 select count(*) as from emp; -- 전체 사원의 수 select count(*) as from emp where job='MANAGER'; -- 매니저의 수 -- 매니저의 수, 평균급여, 최고급여 select count(*), avg(sal), max(sal) from emp where job='MANAGER'; -- 직무의 개수 select count(distinct job) -- 중복제거 from emp ;

------------- 특정 컬럼을 기준으로 그룹핑: Group by 컬럼 select deptno from emp group by deptno --order by deptno와 다르다. ; -- 부서별 평균 월급 select deptno, avg(sal) from emp group by deptno ; -- 각 부서별 인원을 부서별 인원이 많은 수대로 정렬 select deptno, count(*) from emp group by deptno order by count(*) desc ; -- 각 부서별 인원 및 커미션을 받는 사람. select deptno, count(*)as "부서인원", count(comm) as"커미션받는사람 수" from emp -- where comm is not null and comm>0 group by deptno ;

------------------ HAVING : 그룹함수에 조건/ 그룹의 결과를 제한 -- 부서별로 그룹지은 후(GROUP BY), 그룹 지어진 부서별 평균 급여가 2000 이상인(HAVING) -- 부서번호와 부서별 평균 급여를 출력하는 경우 select deptno, round(avg(sal)) from emp GROUP by deptno HAVING avg(sal)>=2000 -- having not avg(sal)>=2000 ; -- 부서별 급여의 최대값과 최소값을 구하되 -- 최대 급여가 2900이상인 부서만 출력합니다. select deptno, max(sal), min(sal) from emp group by deptno having max(sal)>=2900 order by deptno ; -- 직무별 지표 : 사원의 수, 급여의 총합, 평균 급여, 최대최소 select job, count(*) || '명' as "사원 수", to_char(sum(sal)*1100, 'L99,999,999') as "급여 총합", to_char((avg(sal))*1100, 'L99,999,999') as "급여 평균", to_char(max(sal)*1100, 'L99,999,999')as "최대 급여", to_char(min(sal)*1100, 'L99,999,999') as "최소 급여" from emp where job != 'PRESIDENT' GROUP by job order by job ;
'DB > Oracle SQL' 카테고리의 다른 글
[ORACLE SQL] 서브쿼리 / 부속질의 (0) | 2020.11.11 |
---|---|
[ORACLE SQL] 서브쿼리 (0) | 2020.11.11 |
[ORACLE SQL] 조인 (0) | 2020.11.11 |
[ORACLE SQL] 함수 / DECODE / CASE / TO_CHAR / TO_NUMBER (0) | 2020.11.10 |
[ORACLE SQL] 정렬을 위한 order by (0) | 2020.11.09 |
[ORACLE SQL] where 조건과 비교 연산자 (0) | 2020.11.09 |
[ORACLE SQL] Select 절의 사칙연산 / distinct 중복생략 / as 정의 / null값 치환 nvl (0) | 2020.11.09 |