< SQL 그룹 함수 실습문제 >
EX1. 모든 사원의 급여 최고액, 최저액, 총액 및 평균액을 표시합니다.
열 레이블을 각각 Maximun, Minimum, Sum 및 Average로 지정하고 결과를 정수로 반올림하는 질의를 작성하시오.
SELECT COUNT(*) AS 사원수,MAX(SALARY) AS Maximum, MIN(SALARY) AS Minimum,
SUM(SALARY) Sum,ROUND(AVG(SALARY),0) Average
FROM EMP;
EX2. 각 직무에 대한 급여 최저액, 최고액, 총액 및 평균액을 표시하도록 한다. 평균은 소숫점 둘째자리까지 표현하시오.
SELECT JOB_ID, MAX(SALARY),MIN(SALARY) SUM(SALARY), TRUNC(AVG(SALARY),2)
FROM EMP
GROUP BY JOB_ID
ORDER BY 1;
EX3. 직무가 동일한 사원의 수를 표시하는 질의를 작성하시오.
SELECT COUNT(*) AS 사원수,JOB_ID
FROM EMP
GROUP BY JOB_ID
ORDER BY 2;
EX4. 관리자 목록 없이 관리자 수만 표시하고 열 레이블을 Number of Managers로 지정합니다.
SELECT COUNT(DISTINCT,MANAGER_ID)AS "NUMBER OF MANAGERS"
FROM EMP
EX5. 최고 급여와 최저 급여의 차액을 표시하는 질의를 작성하고 열 레이블을 DIFFERENCE로 지정하시오.
SELECT MAX(SALARY)-MIN(SALARY) AS DIFFERENCE
FROM EMP;
EX6. 관리자 번호 및 해당 관리자에 속한 사원의 최저 급여, 인원수를 표시합니다.
관리자를 알 수 없는 사원 및 최저 급여가 $5000 미만인 그룹 제외시키고 급여를 기준으로 출력 결과를 내림차순으로 정렬하시오.
SELECT MANAGER_ID, COUNT(MANAGER_ID) ,MAX(SALARY), MIN(SALARY)
FROM EMP
GROUP BY MANAGER_ID
HAVING MIN(SALARY)>=5000 AND MANAGER_ID IS NOT NULL
ORDER BY 3 DESC;
EX7. 부서별 직무별 인원수 및 평균급여를 표시하는 질의를 작성하시오.
단, 평균 급여를 소수점 둘째 자리에서 반올림하고,
부서번호 순으로 정렬하고 부서가 같으면 평균급여가 높은 직무순으로 정렬하시오.
SELECT DEPARTMENT_ID AS 부서,JOB_ID AS 직무,COUNT(JOB_ID) AS "직무별 인원수"
,COUNT(DEPARTMENT_ID) AS "부서별 인원수",
ROUND(AVG(SALARY),1) AS 평균급여
FROM EMP
GROUP BY DEPARTMENT_ID,JOB_ID
ORDER BY 1, 4;
EX8. 총 사원의 수 및 2002,2003, 2004,2005년에 입사한 사원 수를 표시하는 질의를 작성하고 적합한 열 머리글을 지정합니다.
출력 예 )
TOTAL 2002 2003 2004 2005
107 7 6 10 29
SELECT COUNT(*)