일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 컴퓨터구조
- 자바 실습
- 중학1-1
- 텍스트마이닝
- CNN
- 정보처리기사필기
- JSP/Servlet
- 컴퓨터비전
- 파이썬라이브러리
- 연습문제
- 자바
- 딥러닝
- 영어공부
- SQL
- 혼공머신
- 데이터분석
- pandas
- 파이썬
- 정보처리기사실기
- 데이터베이스
- 머신러닝
- 코딩테스트
- numpy/pandas
- 데이터입출력구현
- C++
- CSS
- 중학수학
- html/css
- 정수와유리수
- 운영체제
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
그룹 함수와 윈도우 함수 1 - 데이터 분석을 위한 함수 + 윈도우 함수 1 : 순위 함수 본문
이제 4주 차 새로운 단원 학습을 시작해 본다. 이번 단원도 28개나 되는 소단원이 있다. 오늘 새벽에는 두 가지 개념 학습만 하고 공부를 마칠까 한다.
이론 1 - 데이터 분석을 위한 함수
집계 함수는 윈도우 함수에 포함된다. 이전에는 열과 열의 관계를 조인을 통해 결합하거나 정의하는 연산을 진행했다. 윈도우 함수는 행과 행의 관계를 정의하는 함수를 말한다.
집계 함수는 AVG, SUM과 같은 집계를 내는 함수이다. 순위 함수는 RANK, DENSE_RANK와 같은 함수가 있다. 그룹 함수에서는 GROUP BY를 통해 특정 행을 지정해 준다.
퀴즈 1 - 데이터분석을 위한 함수
이론 2 - 윈도우 함수 : 순위 함수
OVER 구문은 이렇게 3가지로 나뉘어 작성한다. ORDER BY는 PARTITION BY를 통해 소그룹으로 나눈 데이터를 정렬하는 것이다. WINDOWING은 소그룹으로 나눈 데이터를 어떤 순서로 살펴볼 것인지 정하는 구문이다.
급여를 내림차순으로 정렬한 후에 순위를 매기고 있다. SALARY를 기준으로 RANK, DENSE_RANK, ROW_NUMBER 이렇게 3개의 순위 함수가 있다. RANK와 DENSE_RANK를 보면 동일한 값에 대해 동일한 순위를 부여하고 있다. 하지만 ROW_NUMBER의 경우 동일한 SALARY에 대해서도 다른 숫자를 부여한다.
어떤 식으로 순위를 매기는지는 시스템 환경에 따라 다르다. 따라서 중복된 값이 존재할 경우 SALARY 외에 별도의 기준으로 정렬하는 것이 좋다.
STEVE의 SALARY가 4000이고, RANK와 DENSE_RANK 값이 다르다. 동일한 값에 대해 한 건 혹은 다건으로 취급하느냐의 차이이다. DENSE_RANK는 3이라는 중복된 값을 하나의 단건으로 취급하므로 결과는 4가 나오는 것이다.
실습 1 - 윈도우 함수 : 순위 함수
1. 테이블 조회하기
조회해 보면 GYM_MEMBER 테이블에는 멤버 ID, 스쿼트 점수, 벤치 프레스 점수, 데드 리프트 점수 정보가 담겨 있다. 각 멤버 ID 별로 스쿼트 점수, 벤치 프레스 점수, 데드 리프트 점수의 합계를 구하고, 합계 점수를 기반으로 순위를 매겨 조회해볼 것이다.
2. 스쿼트 점수, 벤치 프레스 점수, 데드 리프트 점수의 합계 점수에 대해 동일 점수는 같은 순위로 취급하며, 단건으로 취급하지 않는 순위 함수 RANK를 이용하여 순위를 매겨 조회하기
코드가 좀 복잡한데 하나씩 작성하면 많이 어렵지는 않다. 각 점수를 조회하고, 세 개의 점수 합계를 WEIGHT_SUM이라는 이름으로 구한다. 그리고 순위 함수를 사용해 RANK를 구했다. WEIGHT_SUM으로 내림차순 정렬을 했다.
3. 다른 순위 함수도 출력해 보기
세 개를 모두 출력해 보면 각 순위 함수의 차이점을 알 수 있다. DENSE_RANK의 경우 동일한 값에 대해 단건으로 취급하므로 RANK와 달리 3이 되었다. ROW_NUMBER는 별도의 처리를 하지 않고 단순히 순서대로 번호를 부여한다.
문제를 모두 잘 풀었다.
퀴즈 2 - 윈도우 함수 : 순위 함수
학습을 마치고
첫 번째 이론 학습은 분량이 얼마 되지 않아서 두 개의 단원을 이어서 정리해 보았다. 윈도우 함수는 처음 들어보는 개념이라 무척 까다롭게 느껴졌으나 막상 공부해 보니 별로 그렇지 않았다.
이제 SQL도 많이 익숙해졌고 어떤 문제가 나와도 자신이 있다.
'알고리즘 및 자료 관리 > SQL' 카테고리의 다른 글
그룹 함수와 윈도우 함수 3 - 윈도우 함수 3 : 그룹 내 행 순서 함수 (0) | 2024.10.24 |
---|---|
그룹 함수와 윈도우 함수 2 - 윈도우 함수 2 : 일반 집계 함수 (0) | 2024.10.24 |
서브쿼리 심화 8 - 미션 문제 풀기 및 단원 마무리하기 (0) | 2024.10.24 |
서브쿼리 심화 7 - 뷰 (0) | 2024.10.23 |
서브쿼리 심화 6 - 스칼라 서브쿼리 (0) | 2024.10.23 |