Database/Mysql

[MySQL][SQL] 2-3. DML: Inner Function (Multi Row)

noahkim_ 2026. 3. 5. 15:01

1. Aggregation

  • 여러 행의 데이터를 하나로 요약하여 집계값을 반환하는 연산

 

Group By

  • 특정 컬럼 기준으로 행을 그룹화
  •  Null 값도 하나의 그룹으로 포함됨
  • ✅ True/False 값은 1/0으로 처리됨

 

Having

  • 그룹의 결과를 필터링함
  • ✅ Group By 이후 집계 결과에서 포함될지 결정됨

 

2. Column Functions

기본 집계 함수

함수 설명 예시
COUNT() 행 개수 COUNT(*)
SUM() 합계 SUM(price)
AVG() 평균 AVG(score)
MAX() 최대값 MAX(salary)
MIN() 최소값 MIN(age)

 

비트 집계 함수

함수 설명
BIT_AND() 비트 AND 집계
BIT_OR() 비트 OR 집계
BIT_XOR() 비트 XOR 집계

 

문자열 집계 함수

함수 설명
GROUP_CONCAT()
문자열을 하나로 결합

 

통계 집계 함수

함수 설명
STD() 표준편차
STDDEV() 표준편차
STDDEV_POP() 모집단 표준편차
STDDEV_SAMP() 표본 표준편차
VARIANCE() 분산
VAR_POP() 모집단 분산
VAR_SAMP() 표본 분산

 

JSON 집계 함수

함수 설명
JSON_ARRAYAGG() JSON 배열 생성
JSON_OBJECTAGG() JSON 객체 생성

 

3. Window Functions

  • 행을 유지하면서 각 행에 대해 계산을 수행하는 함수
  • ✅ Group By 사용 안함

 

구조

함수() OVER (
    PARTITION BY <column>
    ORDER BY <column>
    ROWS BETWEEN <start> AND <end>
)
  • OVER(): 윈도우 정의
  • Partition By: 그룹 나누기
  • Order By: 순서 기준
  • Rows Between: 어느 범위까지 집계할 지 결정

 

표) Rows Between - start/end

더보기
키워드 의미
UNBOUNDED PRECEDING
파티션의 맨 처음 행
n PRECEDING
현재 행 기준 n행 앞
CURRENT ROW 현재 행
n FOLLOWING
현재 행 기준 n행 뒤
UNBOUNDED FOLLOWING
파티션의 맨 마지막 행

 

순위 함수

함수 설명
ROW_NUMBER() 순번
RANK() 순위 (동점 건너뜀)
DENSE_RANK() 순위 (동점 유지)
NTILE(n) n개 그룹으로 분할

 

코드) RANK()

더보기
SELECT name,
       salary,
       RANK() OVER (ORDER BY salary DESC)
FROM employees;

 

집계 윈도우 함수

함수 설명
SUM() 누적 합
AVG() 평균
COUNT() 개수
MAX() 최대
MIN() 최소

 

코드) SUM()

더보기
SELECT date,
       sales,
       SUM(sales) OVER (ORDER BY date)
FROM orders;

 

누적합

SELECT date,
       sales,
       SUM(sales) OVER (
            ORDER BY date
            ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
       )
FROM orders;

 

코드) AVG()

더보기

이동 평균 (최근 N개)

SELECT date,
       sales,
       AVG(sales) OVER (
            ORDER BY date
            ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
       )
FROM orders;

 

위치 윈도우 함수

함수 설명
LAG() 이전 행 값
LEAD() 다음 행 값

 

코드) LAG()

더보기
SELECT salary,
       LAG(salary) OVER (ORDER BY salary)
FROM employees;