# 문제풀이에 사용된 함수
= GROUP BY / HAVING / AVG() / MAX() / MIN() / SUM() / DISTINCT / COUNT()
- --문제1) EMPLOYEES 테이블에서
- --모든 SALESMAN(SA_MAN)에 대하여
- --급여의 평균, 최고액, 최저액, 합계를 구하여 출력하여라.
- SELECT
- AVG(SALARY) "급여의 평균",MAX(SALARY) "최고액",MIN(SALARY) "최저액",SUM(SALARY) "합계"
- FROM EMPLOYEES
- WHERE JOB_ID = 'SA_MAN'
- ORDER BY JOB_ID;
- --문제2) EMPLOYEES 테이블에 등록되어 있는인원수,
- --보너스가 NULL이 아닌 인원수,보너스의 평균
- --등록되어 있는 부서의 수를 구하여 출력하라.(# 중요)
- SELECT COUNT(EMPLOYEE_ID) "등록된 사원 수" FROM EMPLOYEES;
- SELECT
- COUNT(COMMISSION_PCT) "보너스가 있는 사원수",FLOOR(AVG(SALARY*COMMISSION_PCT)) "보너스 평균"
- FROM EMPLOYEES WHERE COMMISSION_PCT IS NOT NULL;
- SELECT
- COUNT(DISTINCT DEPARTMENT_ID)
- FROM EMPLOYEES
- WHERE DEPARTMENT_ID IS NOT NULL;
- --문제3) EMPLOYEES 테이블에서
- --부서별로
- --인원수, 평균 급여, 최저급여, 최고 급여, 급여의 합을 구하여 출력하라.
- SELECT
- COUNT(EMPLOYEE_ID) "인원수",FLOOR(AVG(SALARY)) "평균급여",MIN(SALARY) "최고급여",SUM(SALARY) "최저급여"
- FROM EMPLOYEES
- GROUP BY DEPARTMENT_ID;
- --문제4) EMPLOYEES 테이블에서
- --각 부서별로
- --인원수,급여의 평균, 최저 급여, 최고 급여, 급여의 합을 구하여 급여의 합이 많은 순으로 출력하여라.
- SELECT
- COUNT(EMPLOYEE_ID) "인원수", FLOOR(AVG(SALARY)) "평균",MIN(SALARY) "최저",MAX(SALARY) "최고",SUM(SALARY) "합"
- FROM EMPLOYEES
- GROUP BY DEPARTMENT_ID
- ORDER BY "합" DESC;
- --문제5) EMPLOYEES 테이블에서
- --부서별, 업무별 그룹하여 결과를
- --부서번호, 업무, 인원수, 급여의 평균, 급여의 합을 구하여 출력하여라.
- SELECT
- DEPARTMENT_ID "부서명", JOB_ID "업무", COUNT(EMPLOYEE_ID) "인원", FLOOR(AVG(SALARY)) "평균", SUM(SALARY) "합"
- FROM EMPLOYEES
- GROUP BY DEPARTMENT_ID,JOB_ID;
- --문제6) EMPLOYEES 테이블에서
- --부서 인원이 4명보다 많은 부서의
- --부서번호, 인원수, 급여의 합을 구하여 출력하여라.(GROUP BY, HAVING)
- SELECT
- DEPARTMENT_ID "부서명", COUNT(EMPLOYEE_ID) "인원", SUM(SALARY) "월급 합"
- FROM EMPLOYEES
- GROUP BY DEPARTMENT_ID
- HAVING DEPARTMENT_ID > 4;
- --문제7) EMPLOYEES 테이블에서
- --급여가 최대 10000이상인 부서에 대해서
- --부서번호, 평균 급여, 급여의 합을 구하여 출력하여라.(#중요)
- SELECT
- DEPARTMENT_ID "부서번호", FLOOR(AVG(SALARY)) "평균" , SUM(SALARY) "합"
- FROM EMPLOYEES
- GROUP BY DEPARTMENT_ID
- HAVING SUM(SALARY) > 10000;
- --문제8) EMPLOYEES 테이블에서
- --업무별 급여의 평균이 10000 이상인 업무에 대해서
- --업무명,평균 급여, 급여의 합을 구하여 출력하라.
- SELECT
- JOB_ID, FLOOR(AVG(SALARY)), SUM(SALARY)
- FROM EMPLOYEES
- GROUP BY JOB_ID
- HAVING FLOOR(AVG(SALARY)) > 10000;
- --문제9) EMPLOYEES 테이블에서
- --전체 월급이 10000을 초과하는 각 업무에 대해서
- --업무와 월급여 합계를 출력하라.
- --단 판매원은 제외하고 월 급여 합계로 정렬(내림차순)하라.(SA_)(#중요)
- SELECT
- JOB_ID, SUM(SALARY)
- FROM EMPLOYEES
- GROUP BY JOB_ID
- HAVING SUM(SALARY) > 10000 AND JOB_ID NOT LIKE 'SA_%'
- ORDER BY SUM(SALARY) DESC;
'오랜된 포스팅 > SQL Developer' 카테고리의 다른 글
SQL Developer 기본문제 풀이(+IN(SUBQUREY) ...) (0) | 2018.06.22 |
---|---|
SQL Developer 기본문제 풀이(+JOIN / CROSS JOIN / SELF JOIN ...) (0) | 2018.06.22 |
SQL Developer 기본문제 풀이(+LOWER() / UPPER() / CONCAT() / LENGTH()...) (0) | 2018.06.21 |
SQL Developer 기본문제 풀이(+ORDER BY / DESC) (0) | 2018.06.21 |
SQL Developer 기본문제 풀이(+WHERE / AND / ANY()/ LIKE 'n%' / IS NULL / OR ) (0) | 2018.06.21 |