관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

그룹 함수와 윈도우 함수 4 - 윈도우 함수 4 : 그룹 내 비율 함수 1 <이론 학습 및 실습 문제 풀기> 본문

알고리즘 및 자료 관리/SQL

그룹 함수와 윈도우 함수 4 - 윈도우 함수 4 : 그룹 내 비율 함수 1 <이론 학습 및 실습 문제 풀기>

huenuri 2024. 10. 24. 12:32

윈도우 함수가 많이 어렵지만 그래도 공부를 이어가 볼 것이다. 아마도 처음 들어보는 개념이라 많이 생소한 것 같다.


 

 

 

 

이론 5 - 윈도우 함수 : 그룹 내 비율 함수

 

 

 

 

 

 

 

TOTAL_SALARY에서 SALARY의 비율을 구하는 것이다.

 

 

 

 

 

 

 

 

 

 

 

 

현재 행보다 작거나 같은 값들이 어떤 비율로 어떻게 표시되는지 확인할 수 있다.

 

 

 

 

 

NTILE 안에 숫자가 오는데 몇 개의 그룹으로 값이 오는지 판단한다.


 

 

 

 

실습 4 - 윈도우 함수 : 그룹 내 비율 함수(RATIO_TO_REPORT)

 

 


 

 

1. 테이블 조회하기

 

 

예산 사용 테이블, BUDGET_USE 테이블에서 각 비용이 전체 비용 합계에서 차지하는 비율을 백분율(소수점 5번째 자리에서 반올림)로 조회해 볼 것이다.


 

 

 

2. 비용이 전체 비용 합계에서 차지하는 비율을 구해 ID, 사용 코드, 비용, 비율로 조회하기

 

 

값은 분모와 분자 관계로 나타나기 위해 나누기를 사용했다. 우연히 RATIO의 값이 소수점 다섯 번째 자리에서 반올림이 되었지만 이 부분을 적용시킨 코드를 작성해 보겠다.


 

 

3. ROUND 함수 활용해서 소수점 5번째 자리에서 반올림하기

 

 

ROUND 함수는 콤마를 기준으로 앞에는 어떤 값을 반올림할지, 뒤에는 몇 번째에서 반올림할지 적어준다.

 


 

 

 

 

 

실습 5 - 윈도우 함수 : 그룹 내 비율 함수(PERCENT_RANK, CUME_DIST)

 

 


 

 

1. 테이블 조회하기

 

 

이렇게 과목별 순위가 출력된다. 학생들의 수학, 물리, 화학 점수의 총합에 대해서 상위 몇%에 해당하는지에 대한 백분율 순위와, 누적 분포도 백분율 값에 대해서 알아보려고 한다.

학생들의 수학, 물리, 화학 점수의 총합을 기준으로 고득점자 순위로 정렬하고 PERCENT_RANK를 활용한 백분율 순위와 CUME_DIST를 활용한 누적 백분율을 조회하는 쿼리를 작성하면 될 것이다.


 

 

 

 

2. 수학 점수, 물리 점수, 화학 점수를 모두 합한 총합 점수 구하기

 


 

 

 

3. 해당 값들을 통해 ID, 수학 점수, 물리 점수, 화학 점수, 총합 점수, 백분율 순위, 누적 백분율 조회

 

 

PERCENT_RANK는 0을 포함한 값이, CUME_IDST는 0.02부터 0.02가 증가된 값이 출력된다. 

 


 

 

 

학습을 마치고

실습 문제가 정말 어렵지만 그래도 끝까지 포기하지 않고 공부를 이어가고 있다. 단원이 난이도가 높다 보니 학습하는데 예상보다 많은 시간이 걸리고 있다. 아무래도 아침 시간에 다 마치는 건 불가능할 것 같다. 앞으로 1시간 남은 시간 동안 윈도우 함수를 마치고 그룹 함수의 절반 정도는 학습을 마칠 생각이다.