[DB] MySQL - 시스템 함수 / 윈도우 함수

aseol·2023년 7월 24일
0

MySQL

목록 보기
4/18

시스템 함수

ᅠ 시스템의 정보를 출력하는 함수를 제공

USER() : 사용자 확인
DATABASE() : 데이터베이스 확인
VERSION() : 버전 확인

SLEEP() : 의도적으로 쿼리 실행을 멈춘다

윈도우 함수

window function. 테이블의 행과 행을 비교∙연산∙정의하기 위한 함수

💡 윈도우 : 어떠한 분석을 수행하기 위하여 선택되는 자료의 구간

GROUP BY와 비교

ᅠ GROUP BY는 기존 데이터를 그룹화하여 합쳐서 보여 주는 반면,
Window function은 기존 데이터도 보여 주고, 예를 들어 합계를 구했다면, 그 합계까지 전부 보여 준다.

특징

  • 집계 함수 대부분 사용 가능
  • GROUP BY를 사용하지 않고 속성의 값을 집계할 함수를 작성
  • ORDER BY와 함께 사용
  • SELECT절에 사용하며 정렬된 순서에 순서를 붙여 새로운 컬럼을 보여 준다

구문

집계_함수(컬럼명) OVER (PARTITION BY 그룹화대상 컬럼명 ORDER BY 정렬 기준 컬럼명)

※ PARTITION BY와 ORDER BY는 둘 다 있어야 하는 건 아니다 


순위 함수

ROW_NUMBER() : 중복이 없는 순위를 표시
ᅠ EX. 동일한 값들끼리도 순서를 정하여 표시한다. 해당 ROW가 몇 번째 ROW인지 판단해서 각 ROW가 유일한 숫자[순위]를 가지도록 출력한다 = 어떻게든 순서를 정한다!

RANK() : 중복값에 대해 동일 순위로 표시
ᅠ EX. 1등이 3개면 1등 3번 출력 후 4등으로 넘어간다.

DENSE_RANK() : 중복이 가능하고 공동 순위가 있더라도 순차적으로 순위를 표시
ᅠ EX. 1등이 3개면 1등 3번 출력 후 2등을 부여한다.

3개의 함수 모두 괄호 안에 인자가 들어갈 필요 없기 때문에 비워 놓는다
( ∵ 어떤 기준으로 순위를 정할지 컬럼만 작성하면 되므로)

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기