본문 바로가기

Data Analysis/Data Analysis

Project 4. HR 데이터를 통한 채용 기획하기 (3)

이 글은 24.02.19에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.

 

 

Project 4. HR 데이터를 통한 채용 기획하기

지난번 내용에 이어서...
DBeaver에 MySQL을 연결해서 사용하고 있다!



SQL분석

Ad hoc Query(2)

  • 연봉 협상 전에 전 직원들에게(당연히 재직자들) 내년 예상 연봉 고지를 하기로 한다. 아래 조건에 맞춰서 Salary 관련 지표를 집계하도록 하라.

지표 : 부서/직급/직무 별 평균 월급과 평균 Salary 인상률과 부서/직급/직무 별 내년 추정 월급 및 추정 연봉

1) 부서, 직급, 직무 별 평균 월급과 평균 Salary 인상률

2) 부서, 직급, 직무 별 내년 추정 월급 및 추정 연봉

3) 올해 승진자가 있는 그룹 대상으로 내년 추정연봉이 20만 이상인 그룹 필터링, 추정연봉 내림차순 정렬

 

Window function

- group by도 집계함수인데, 정확히 어떤 차이점이 있는 거지??


실제 쿼리를 짜서 차이점에 대해 알아보자.
1) group by

2) window function


보다시피 데이터가 줄어들지 않았고, 집계된 값이 우측에 추가되어있다. 사진에선 잘렸지만 저 아래로 쭉쭉 출력되어있다.

어디에 활용할 수 있을까?

예시를 들어 보자.
직급/퍼포먼스별 직원 수를 보고 싶다.

그런데 이와 동시에 해당 직급의 전체 인원 수도 같이 보고 싶다... 고 한다면?
이럴 때 window function을 쓰는 것이다.

퍼포먼스별 전체 인원 수도 같이 보고 싶다면?
역시나 window function을 쓴다

 

LEAD&LAG

윈도우 함수 중 하나인 LEAD, LAG에 대해 알아보자.
우선, 각각 무슨 뜻인가를 알면 두 함수를 구별하는게 좀 쉬워진다.

즉 아래와 같이 사용되는 윈도우 함수다.

직접 써보자

가져오는 행 수를 조절할 수도 있다.

window function이므로 당연히 over()에 partition by도 써볼 수 있다.

 

Ad hoc Query(3)

  • 부서/직급별로 진급시 연봉 인상률 트렌드를 알고 싶다. 아래의 결과를 출력하는 쿼리를 작성하자(소수점 첫째자리까지).

1) 평균 월급


2) 부서 내에서 직급이 오르면 받게 될(=다음 직급의) 평균 월급


3) 직급별 평균 월급 차이


4) 직급별 평균 월급 인상률 차이