관리 메뉴

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

그룹 함수와 윈도우 함수 3 - 윈도우 함수 3 : 그룹 내 행 순서 함수 본문

알고리즘 및 자료 관리/SQL

그룹 함수와 윈도우 함수 3 - 윈도우 함수 3 : 그룹 내 행 순서 함수

huenuri 2024. 10. 24. 11:40

이어서 윈도우 함수 학습을 진행해 보겠다. 이번 강의는 분량이 좀 더 많다.


 

 

 

 

이론 4 - 윈도우 함수 : 그룹 내 행 순서 함수

 

 

 

 

 

 

 

 

 

 

FIRST_VALUE 값을 좀 더 자세히 살펴보자. DEPARTMENT_ID가 1인 데이터와 2인 데이터로 나누어진다. BETWEEN A AND B는 A와 B를 포함하는 범위를 말한다.

여기서 UNBOUNDED PRECEDING은 윈도우의 시작 점이 가장 첫 번째 행이고, UNBOUNDED FOLLWING은 윈도우의 마지막 지점이 가장 마지막 행이다. 즉 DEPARTMENT_ID가 1인 네 가지 값에서 첫 번째 값은 1500이므로 DEPARTMENT_MIN_SALARY의 값은 1500이 되고, 마지막 값은 10000이므로 DEPARTMENT_MAX_SALARY의 값은 10000이 된다.

 

 

 

 

 

 

앞 또는 뒤에 X번째 행의 값을 가져오는 함수이다. 본인 데이터의 앞이나 뒤에 데이터를 가져올 때 이 함수를 사용한다.


 

 

 

 

실습 3 - 윈도우 함수 : 그룹 내 행 순서 함수

 

 


 

 

 

1. 테이블 조회하기

 

 

이렇게 기록이 조회된다. 여기서 각 그룹에 대해 참가자의 앞, 뒤 기록과 그룹 내 가장 빠른 기록, 가장 느린 기록을 구하려고 한다. 해당 값들을 구하기 위해 그룹 내 행 순서 함수를 이용하면 된다.


 

 

 

2. 각 그룹별로 나누어 참가자의 앞, 뒤 기록과 그룹 내에서 가장 빠른 기록, 가장 느린 기록을 조회하기

 

 

LEAD와 LAG 함수를 활용해서 앞사람과 뒷사람의 기록을 출력해 보았다. 이번에는 FIRST_VALUE와 LAST_VALUE를 활용해서 그룹 내에서 가장 빠른 기록과 느린 기록을 조회해 보겠다.


 

 

 

3. FIRST_VALUE, LAST_VALUE를 활용하여 가장 빠른 기록과 가장 느린 기록을 조회하기

 

ROWS라는 개념으로 행들에 대한 집합을 담아준다.

 

 

 

하지만 뭔가 오류가 떴다. 아마도 별칭을 지정하지 않았기 때문에 오류가 뜨는 것 같다.


 

 

 

4. 오류 수정해 보기

 

 


 

 

 

 

퀴즈 3 - 윈도우 함수 : 그룹 내 행 순서 함수

 

 

 


 

 

 

학습을 마치고

윈도우 함수는 솔직히 많이 어렵기도 하고 지금은 공부해도 어차피 다 잊어버릴 것 같아 그냥 가벼운 마음으로 공부하기로 했다. 정말 이해가 안 되는 코드가 많지만 그냥 넘어가고 다음에 SQLD 시험을 볼 때 이 부분을 다시 공부해보려고 한다.

그때는 많은 걸 이해할 수 있을 것 같다. 지금은 SQL이 많이 설익어서 어려움이 있다.