GROUP BY (23.05.17)

·2023년 5월 18일
0

Coding Test

목록 보기
19/39
post-thumbnail

✏️ 문제 1

EMPLOYEE 테이블에서 각 부서별 가장 높은 급여, 가장 낮은 급여를 조회하여
부서 코드 오름차순으로 정렬하세요.

  • 풀이
SELECT DEPT_CODE, MAX(SALARY), MIN(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE
ORDER BY DEPT_CODE;

✏️ 문제 2

EMPLOYEE 테이블에서 각 직급별 보너스를 받는 사원의 수를 조회하여
직급코드 오름차순으로 정렬하세요.

  • 풀이
SELECT JOB_CODE, COUNT(BONUS) || '명'
FROM EMPLOYEE
GROUP BY JOB_CODE
ORDER BY JOB_CODE;
  • 다른 풀이
SELECT JOB_CODE, COUNT(*)
FROM EMPLOYEE
WHERE BONUS IS NOT NULL
GROUP BY JOB_CODE
ORDER BY JOB_CODE;

✏️ 문제 3

EMPLOYEE 테이블에서
부서별 70년대생의 급여 평균이 300만 이상인 부서를 조회하여
부서 코드 오름차순으로 정렬하세요

  • 내 풀이 - WHERE절과 GROUP BY절에 들어가는 조건이 달라 결과 값이 다르게 나옴
SELECT EMP_NAME 직원명, DEPT_CODE 부서코드,
    TO_CHAR(TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD'), 'RR"년 "MM"월 "DD"일"') 생년월일,
    EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM(TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD'))) || '세' 나이
FROM EMPLOYEE;
  • 다른 풀이
SELECT DEPT_CODE, FLOOR(AVG(SALARY)) "급여 평균"
FROM EMPLOYEE
--WHERE SUBSTR(EMP_NO, 1, 1) = '7'
--WHERE SUBSTR(EMP_NO, 1, 2) >= '70' AND SUBSTR(EMP_NO, 1, 2) < '80'
--WHERE SUBSTR(EMP_NO, 1, 2) LIKE '7%'
WHERE SUBSTR(EMP_NO, 1, 6) BETWEEN '700101' AND '791231'
GROUP BY DEPT_CODE
HAVING AVG(SALARY) >= 3000000
ORDER BY DEPT_CODE;
profile
풀스택 개발자 기록집 📁

0개의 댓글