복수행 함수
여러개의 row 당 하나의 결과값을 반환하는 함수.
COUNT(칼럼명)
해당 칼럼이 존재하는 ROW 의 갯수를 반환한다. 단, 저장된 데이터가 NULL 인 칼럼은 세지 않는다.
SQL>SELECT COUNT(ename) FROM emp;
SQL>SELECT COUNT(comm) FROM emp;
SQL>SELECT COUNT(*) FROM emp ;
SUM(칼럼명)
해당 칼럼의 값을 모두 더한 값을 리턴한다.
SQL>SELECT SUM(sal) FROM emp;
AVG(칼럼명)
해당 칼럼의 값을 모든값을 더한후 ROW 의 갯수로 나눈 평균값을 리턴한다. 단 NULL 칼럼은 제외된다.
SQL>SELECT AVG(sal) FROM emp;
SQL>SELECT AVG(comm) FROM emp;
ex) comm 이 NULL 인 사원도 평균에 포함 시켜서 출력을 하려면? hint : NVL() 함수를 이용한다.
SQL>SELECT AVG( NVL( comm , 0 ) ) FROM emp;
MAX(칼럼명)
최대값을 리턴한다.
SQL>SELECT MAX(sal) FROM emp;
MIN(칼럼명)
최소값을 리턴한다.
SQL>SELECT MIN(sal) FROM emp;
GROUP BY
그룹으로 묶을 때 사용한다.
ex)
부서별 급여의 총합을 출력하라.
SQL>SELECT deptno,SUM(sal)
FROM emp
GROUP BY deptno ;
부서별 평균 급여를 구해보세요. (반올림해서 소수 첫째 자리 까지만)
SQL>SELECT deptno, ROUND( AVG(sal) , 1 )
FROM emp
GROUP BY deptno;
직업별 최대 급여를 구해보세요.
SQL>SELECT job, MAX(sal)
FROM emp
GROUP BY job ;
급여가 1000 이상인 사원들의 부서별 평균 급여의 반올림 값을 부서번호로 내림차순 정렬해서 출력해 보세요.
SQL>SELECT deptno, ROUND( AVG(sal) )
FROM emp
WHERE sal >= 1000
GROUP BY deptno
ORDER BY deptno DESC ;
급여가 2000 이상인 사원들의 부서별 평균 급여의 반올림 값을 평균 급여의 반올림 값으로 오름차순 정렬해서 출력해 보세요.
SQL>SELECT deptno, ROUND( AVG(sal) )
FROM emp
WHERE sal >= 2000
GROUP BY deptno
ORDER BY ROUND( AVG(sal) ) ASC ;
각 부서별 같은 업무(job)를 하는 사람의 인원수를 구해서 부서번호, 업무(job), 인원수를 부서번호에 대해서 오름차순 정렬해서 출력해 보세요.
SQL>SELECT deptno, job, count(*)
FROM emp
GROUP BY deptno, job
ORDER BY deptno ASC;
급여가 1000 이상인 사원들의 부서별 평균 급여를 출력해보세요. 단, 부서별 평균 급여가 2000 이상인 부서만 출력하세요.
SQL>SELECT deptno, AVG(sal)
FROM emp
WHERE sal >= 1000
GROUP BY deptno
HAVING AVG(sal) >= 2000 ;
'database > oracle' 카테고리의 다른 글
oracle quiz (0) | 2022.07.14 |
---|---|
9. oracle(JOIN) (0) | 2022.07.14 |
7. oracle (단일행 함수, 숫자 함수, 날짜 함수, 변환함수) (0) | 2022.07.14 |
6. oracle(단일행 함수,문자 함수) (0) | 2022.07.14 |
5. oracle (SPOOL, HOST) (0) | 2022.07.14 |