본문 바로가기
Coding/데이터베이스

[오라클] 다중행 함수와 데이터 그룹화 예제

by 찡콩찡 2022. 4. 4.
--10. 급여 합계
SELECT SUM(SAL) FROM EMP;

--11. 사원의 이름, 급여합계
SELECT ENMAE, SUM(SAL) FROM EMP; --(오류남) 어느 한사람의 합계와 전체 합계가 같을 수 없어 SUM은 전체 합계이기 때문에 이름 전체 합계는 나올 수 없음
SELECT ENAME, SUM(SAL) FROM EMP GROUP BY ENAME;

--12.보너스(COMM)합계
SELECT SUM(COMM) FROM EMP;

--13.급여 중복 제거한 합계
SELECT SUM(DISTINCT SAL) FROM EMP;

--14.급여 중복 제거한 합계, 전체 급여 합계, 전체급여 합계 (ALL사용)
SELECT SUM(DISTINCT SAL),SUM(ALL SAL),SUM(SAL) FROM EMP;

--15.전체 사원 수 
SELECT COUNT(*) FROM EMP;

--16. 30번 부서의 사원수  답:6
SELECT COUNT(*) FROM EMP WHERE DEPTNO=30;

--17. 중복제거한 급여의 수,전체 급여의 수  답: 12 / 14
SELECT COUNT(DISTINCT SAL), COUNT(SAL) FROM EMP;


--18. 보너스 수, 전체 인원수, 관리자 수,
SELECT COUNT(COMM), COUNT(*),COUNT(MGR),COUNT(EMPNO) FROM EMP;

--19.보너스가 정해진 사원의 수  답:4
SELECT COUNT(*)FROM EMP WHERE COMM IS NOT NULL;

--20.보너스가 안 정해진 사원의 수 (NULL인 사람을 찾아라)  답 :10
SELECT COUNT(*) FROM EMP WHERE COMM IS NULL;

--21.보너스를 받는 사원의 수   답:3
SELECT COUNT(*) FROM EMP WHERE COMM>0;

--22.10번 부서에서 최고 급여
SELECT MAX(SAL) FROM EMP WHERE DEPTNO=10;

--23.10번부서에서 최저 급여
SELECT MIN(SAL) FROM EMP WHERE DEPTNO=10;

--24.20번 부서에서 최근에 입사한 사원의 입사일
SELECT MAX(HIREDATE) FROM EMP WHERE DEPTNO=20;

--25.20번 부서에서 최초 입사자의 입사일
SELECT MIN(HIREDATE) FROM EMP WHERE DEPTNO=20;

--26.30번 부서의 평균 급여
SELECT AVG(SAL) FROM EMP WHERE DEPTNO=30;

--27.30번 부서에서 중복제거한 급여의 평균
SELECT DISTINCT(AVG(SAL)) FROM EMP WHERE DEPTNO=30;

--28.10,20,30번 부서 각각의 평균 급여 출력 GROUP BY 이용
SELECT DEPTNO,TRUNC(AVG(SAL)) FROM EMP WHERE DEPTNO IN(10,20,30) GROUP BY DEPTNO ORDER BY DEPTNO;

--28-2.UNION이용
SELECT TRUNC(AVG(SAL)), '10' AS DEPTNO FROM EMP WHERE DEPTNO=10
UNION
SELECT TRUNC(AVG(SAL)), '20' AS DEPTNO FROM EMP WHERE DEPTNO=20
UNION
SELECT TRUNC(AVG(SAL)), '30' AS DEPTNO FROM EMP WHERE DEPTNO=30;

--29.부서별 사원수
SELECT DEPTNO, COUNT(DEPTNO) FROM EMP GROUP BY DEPTNO;
SELECT DEPTNO, COUNT(*) FROM EMP GROUP BY DEPTNO;

--30.부서별 급여 최고액
SELECT DEPTNO,MAX(SAL) FROM EMP GROUP BY DEPTNO ORDER BY DEPTNO;

--31.부서별 최초 입사자의 입사일
SELECT DEPTNO,MIN(HIREDATE) FROM EMP GROUP BY DEPTNO;