SQL 고득점 Kit - 8.24

김동현·2024년 8월 24일

SQL 고득점 Kit

목록 보기
38/56

GROUP BY - 부서별 평균 연봉 조회하기

문제

HR_DEPARTMENT와 HR_EMPLOYEES 테이블을 이용해 부서별 평균 연봉을 조회하려 합니다. 부서별로 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SQL문을 작성해주세요.

평균연봉은 소수점 첫째 자리에서 반올림하고 컬럼명은 AVG_SAL로 해주세요.
결과는 부서별 평균 연봉을 기준으로 내림차순 정렬해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/284529

풀이

## join을 하고 난 뒤 부서별 그룹핑 후 연봉 평균
WITH dept as (
    SELECT hd.DEPT_NAME_EN, ROUND((SUM(SAL) / COUNT(SAL))) AVG_SAL
    FROM HR_DEPARTMENT hd
    INNER JOIN HR_EMPLOYEES he
    ON hd.DEPT_ID = he.DEPT_ID
    GROUP BY hd.DEPT_NAME_EN
)

## ID 출력을 위한 JOIN
SELECT hd.DEPT_ID, hd.DEPT_NAME_EN, AVG_SAL
FROM dept d
INNER JOIN HR_DEPARTMENT hd
ON d.DEPT_NAME_EN = hd.DEPT_NAME_EN
ORDER BY AVG_SAL DESC

리뷰

  • 이제 문제를 보고 어떻게 접근하면 풀 수 있겠다 라는 생각이 들고 쿼리를 짤 수 있게 되는 것 같다.
  • 필요한 부분을 한 번에 작성하는 것보다 WIHT을 사용하여 재사용성과 간편하게 작성할 수 있게 고려하고 진행했다. (근데 더 효율이 좋은 쿼리는 잘 모르겠음....)

SELECT - 대장균의 크기에 따라 분류하기 1

문제

대장균 개체의 크기가 100 이하라면 'LOW', 100 초과 1000 이하라면 'MEDIUM', 1000 초과라면 'HIGH' 라고 분류합니다. 대장균 개체의 ID(ID) 와 분류(SIZE)를 출력하는 SQL 문을 작성해주세요.이때 결과는 개체의 ID 에 대해 오름차순 정렬해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/299307

풀이

SELECT 
    ID,
    CASE 
        WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
        WHEN (SIZE_OF_COLONY > 100) AND (SIZE_OF_COLONY <= 1000) THEN 'MEDIUM'
        ELSE 'HIGH'
    END 'SIZE'  
FROM ECOLI_DATA
ORDER BY ID

리뷰

  • CASE를 이용하여 조건을 만족하는 컬럼을 수정하여 출력하였다.
  • CASE만 알면 바로 풀 수 있는 쉬운 수준이라 왜 3레벨인지 모르겠다.

GitHub

부서별 평균 연봉 조회하기
https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/284529.%E2%80%85%EB%B6%80%EC%84%9C%EB%B3%84%E2%80%85%ED%8F%89%EA%B7%A0%E2%80%85%EC%97%B0%EB%B4%89%E2%80%85%EC%A1%B0%ED%9A%8C%ED%95%98%EA%B8%B0

대장균의 크기에 따라 분류하기 1
https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/299307.%E2%80%85%EB%8C%80%EC%9E%A5%EA%B7%A0%EC%9D%98%E2%80%85%ED%81%AC%EA%B8%B0%EC%97%90%E2%80%85%EB%94%B0%EB%9D%BC%E2%80%85%EB%B6%84%EB%A5%98%ED%95%98%EA%B8%B0%E2%80%851

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글