06/29 SQL 문제풀이 - (⭐⭐⭐) 1468. Calculate Salaries (Leetcode)

Data Architect / Engineer·2024년 6월 29일
1

1일_1SQL

목록 보기
59/63
post-thumbnail

문제

  • LeetCode SQL 문제
  • 1468. Calculate Salaries / Medium
  • 문제 내용 : [링크]

내가 작성한 Query

WITH temp_01 as(
    SELECT company_id, MAX(salary) as max_salary
    FROM salaries
    GROUP BY company_id
)
SELECT s.company_id
    , s.employee_id
    , s.employee_name
    , CASE WHEN t.max_salary < 1000 THEN s.salary
            WHEN t.max_salary <= 10000 THEN round(s.salary*(1-0.24), 0)
            ELSE round(s.salary*(1-0.49), 0)
            END AS salary
FROM salaries s
    JOIN temp_01 t WHERE s.company_id = t.company_id
  • 세금 비율을 계산하기 위해, 각 회사별 MAX(salary) 값을 구하는 임시 테이블 (temp_01)을 구한다.

  • company_id, employee_id, employee_name을 추출한다.

  • 회사별 MAX(salary)가 포함된 temp_01 테이블과 salaries 테이블을 company_id를 기준으로 JOIN 해준다.

  • company_id, employee_id, employee_name을 추출한다.

  • CASE WHEN THEN 구문을 통해, 문제의 요구사항에 따라 max_salary가 1000 미만인 경우, 1000 이상 10000 이하인 경우, 10000 이상인 경우 세금 비율을 반영한 salary를 계산한다.

  • 정수 부분만 추출하기 위해 ROUND() 함수를 활용한다.


⭐⭐⭐
temp_01 임시 테이블을 작성할 때,CASE WHEN THEN 구문을 통해salary별 세금 비율을 먼저 구하는 방법으로도 쿼리를 작성할 수 있다. 이 경우, 최종 salary를 구하는 쿼리가 더 단순해질 수 있다.

profile
질문은 계속돼 아오에

0개의 댓글