블로그 포스팅: SQL 문제 해결 - 평균 월급 계산에서 발생한 오류 잡기

이번 포스팅에서는 재미있는 SQL 문제를 다루어 보겠습니다. 문제는 직원들의 월급을 계산하는 과정에서 발생한 실수를 잡아내고, 이를 SQL 쿼리로 해결하는 방법을 소개합니다.

문제 설명

한 직원, Samantha가 EMPLOYEES 테이블에서 모든 직원들의 평균 월급을 계산하는 작업을 했습니다. 그런데 작업이 끝난 후, Samantha는 그녀의 키보드에서 '0'이 제대로 입력되지 않았다는 것을 깨달았습니다. 즉, '0'이 포함된 월급이 있을 때 이를 무시한 상태로 잘못된 평균 월급을 계산한 것입니다.

목표: 실제 평균 월급과 잘못된 평균 월급 간의 차이를 구하고, 그 차이를 올림하여 정수로 반환하는 SQL 쿼리를 작성해야 합니다.

테이블 구조

다음은 EMPLOYEES 테이블의 구조입니다:

ColumnType

ID Integer
Name String
Salary Integer

문제 해결 방법

문제를 해결하기 위해 다음 단계를 거칩니다:

  1. 실제 평균 월급을 구합니다.
  2. 잘못된 평균 월급은 '0'이 제거된 상태에서 월급을 계산한 값입니다.
  3. 실제 평균과 잘못된 평균의 차이를 계산하고, 그 차이를 올림 처리하여 정수로 반환합니다.

SQL 쿼리 작성

WITH Actual_Salary AS (
    SELECT AVG(Salary) AS avg_actual_salary
    FROM EMPLOYEES
),
Miscalculated_Salary AS (
    SELECT AVG(CAST(REPLACE(Salary, '0', '') AS UNSIGNED)) AS avg_miscalculated_salary
    FROM EMPLOYEES
)
SELECT CEIL(Actual_Salary.avg_actual_salary - Miscalculated_Salary.avg_miscalculated_salary) AS error_amount
FROM Actual_Salary, Miscalculated_Salary;

 

쿼리 설명

  1. Actual_Salary: 이 부분에서는 직원들의 실제 평균 월급을 계산합니다.
SELECT AVG(Salary) AS avg_actual_salary
FROM EMPLOYEES

 

2. Miscalculated_Salary: 여기에서는 월급에서 '0'을 제거한 후, 그 값을 숫자로 변환하여 잘못된 평균 월급을 계산합니다.

SELECT AVG(CAST(REPLACE(Salary, '0', '') AS UNSIGNED)) AS avg_miscalculated_salary
FROM EMPLOYEES

 

3. 마지막으로 두 평균의 차이를 계산한 후, CEIL 함수를 사용하여 올림 처리된 값을 반환합니다.

결과

이 쿼리는 실제 평균과 잘못된 평균의 차이를 정수로 반환하게 되며, 이 값을 통해 Samantha가 범한 오류의 크기를 정확히 알 수 있습니다.

'SQL' 카테고리의 다른 글

Weather Observation Station 2  (1) 2024.10.17
Top Earners  (0) 2024.10.15
Japan Population  (0) 2024.10.07
Revising Aggregations - Averages  (1) 2024.10.06
The PADS  (1) 2024.10.06

+ Recent posts