🗃️ SQL 윈도우 함수로 부서별 급여 비교 분석

SQL 예제

중급 난이도
예제 타입
10/23 등록일

SQL 윈도우 함수로 부서별 급여 비교 분석

중급
태그
예제 실습 프로젝트 SQL 윈도우_함수 성능_최적화
## 프로젝트 개요
부서별 평균 급여와 개인 급여를 비교해 조직 내 연봉 구조를 분석하는 실무 예제입니다. 윈도우 함수를 활용한 집계 및 데이터 시각화 기능을 제공합니다.

## 주요 기능
- 부서별 평균 급여 계산
- 개인 급여와 대비해 상대적 위치 분석
- NULL 값 처리 및 예외 관리
- 성능 최적화를 위한 인덱스 제안

## 사용 방법
1. MySQL/PostgreSQL 환경에서 스크립트 실행
2. `employees` 테이블 생성 후 샘플 데이터 삽입
3. `salary_comparison` 쿼리 실행 시 결과 확인
4. 성능 개선을 위해 `department_id` 컬럼에 인덱스 추가 권장

## 확장 가능성
- 부서별 급여 분포 시각화 기능 추가
- 연봉 상위/하위 10% 계산 기능 구현
- 실시간 데이터 업데이트를 위한 트리거 설정
코드 예제
-- 테이블 생성
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),
    department_id INT,
    salary DECIMAL(10,2)
);

-- 샘플 데이터 삽입
INSERT INTO employees VALUES
(1, '김철수', 101, 5000000),
(2, '박지현', 101, 6500000),
(3, '이준호', 102, 4800000),
(4, '조민서', 102, 5200000);

-- 급여 비교 분석
SELECT 
    e.name,
    e.salary,
    d.department_id,
    ROUND(AVG(e.salary) OVER (PARTITION BY department_id), 0) AS dept_avg_salary,
    CASE WHEN e.salary > AVG(e.salary) OVER (PARTITION BY department_id)
        THEN '상위 50%'
        ELSE '하위 50%'
    END AS salary_position
FROM employees e
ORDER BY department_id, salary;

-- 에러 처리 예시
BEGIN
    -- 인덱스 생성 시 오류 대응
    EXECUTE IMMEDIATE 'CREATE INDEX idx_department ON employees(department_id)';
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('인덱스 생성 중 오류: ' || SQLERRM);
END;
등록일: 2025년 10월 23일 02:39
언어 정보
언어
SQL
카테고리
Data
인기도
#14
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요