본문 바로가기

Study/OracleDB

16강 오라클 SQL 그룹 함수 집계 데이터

728x90

-- 그룹 함수는 하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등 하나의 결과로 나타납니다.
-- 1.1 SUM 함수는 해당 칼럼 값들의 대한 총합을 구하는 함수
-- 다음은 급여 총액 구하는 예제입니다.
select sal from emp;
select sum(sal) from emp;

-- 다음은 커미션 총액 구하는 예제입니다.
select comm from emp;
-- 커미션 컬럼에 NULL값인 사원이 존재하는데, NULL은 블랙 홀이므로 NULL을 저장한 컬럼과 연산한 결과도 NULL 이라고 한다.
-- 커미션 총합을 구해도 NULL 값으로 출력되지 않는다. 그룹 함수는 다른 연산자와는 달리 해당 칼럼 값이 NULL인 것을 제외하고 계산하기 때문이다.
select sum(comm) from emp;

-- 1.2 평균 구하는 AVG 함수
-- 해당 컬럼의 값들에 대해 평균을 구하는 함수이다. 칼럼 값이 NULL 인 것은 제외하고 계산한다.
select avg(sal) from emp;

-- 1.3 최대값 구하는 MAX, 최소값 구하는 MIN 함수.
-- 가장 높은 급여와 가장 낮은 급여를 구하는 쿼리문을 작성하시오.
select max(sal), min(sal) from emp;

-- 1.4 그룹함수와 단순 컬럼
-- 사원들의 최대 급여는 다음과 같이 구한다.
select ename, max(sal) from emp;
-- 의미 없는 데이터가 될 수 있음. 그래서 허용 안되는 sql문임.
-- 단일 그룹의 그룹 함수가 아닙니다.

-- <탄탄히 다지기>
-- 가장 최근에 입사원 사원의 입사일과 입사한지 가장 오래된 사원의 입사일을 출력하는 쿼리문을 작성하시오.
select hiredate from emp;
select min(hiredate) from emp; -- 가장 오래된 고인물!
select max(hiredate) from emp; -- 싱싱한 신입사원!

-- <실험>
select sum(ename) from emp;
-- 수치가 부적합합니다. sum이나 avg는 문자열 데이터는 처리가 안됨. 당연한거 알지?

-- 1.5 로우 개수 구하는 COUNT 함수
-- 테이블에서 조건을 만족하는 행의 개수를 반환하는 함수이다.
-- COUNT 함수에 특정 칼럼을 기술하면 해당 칼럼 값을 갖고 있는 로우의 개수를 계산하여 되돌려준다.
-- 다음은 사원 테이블의 사원들 중에서 커미션을 받은 사원의 수를 구하는 예제입니다.
select count(comm) from emp; -- NULL 값을 제외한 사원의 수

-- count 함수는 null 값에 대해서는 개수를 세지 않는다.
-- 만일 count 함수에 count(*)처럼 *를 적용하면 테이블의 전체로우 수를 구하게 됩니다.
-- 전체 사원의 수와 커미션을 받는 사원의 수를 구하는 예제 입니다.
select count(*), count(comm) from emp;

-- <탄탄히 다지기>
-- 2. 10번 부서 소속 사원중에서 커미션을 받는 사원의 수를 구해보시오.
select count(comm) from emp where deptno=10;

-- 사원 테이블에서 사원들의 직업의 개수를 카운트 해보시오.
select count(job) from emp;

-- 중복되지 않는 직원의 개수를 카운트 해보시오.(DISTINCT 중복 행 제거)
select count(distinct job) from emp;




반응형

'Study > OracleDB' 카테고리의 다른 글

18강 오라클 SQL HAVING 절  (1) 2022.09.09
17강 오라클 SQL GROUP BY 절  (1) 2022.09.09
15강 오라클 SQL 조건식  (1) 2022.09.09
14강 오라클 SQL 데이터 함수의 적용  (1) 2022.09.09
13강 오라클 SQL 변환함수  (1) 2022.09.08