MOD

MOD (나머지)

입력 expr1을 expr2로 나눈 나머지를 반환해요.

모듈로 산술 연산자(expr1 % expr2)와 동일해요.

출처: Snowflake SQL Reference - MOD

본문

구문

MOD( <expr1> , <expr2> )

인자

expr1

숫자 표현식이에요.

expr2

숫자 표현식이에요.

반환 값

정수 또는 고정 소수점 10진수 숫자를 반환해요.

사용 참고 사항

  • expr1과 expr2는 모두 숫자 표현식이어야 해요. 정수일 필요는 없어요.
  • 반환 값은 바닥 나눗셈(아래로 내림)이 아니라 잘림 기반 나눗셈(0으로 반올림)의 나머지예요. 따라서 expr1이 음수이면 반환 값도 음수예요. 이 동작은 일부 프로그래밍 언어(예: Python)와 다르지만 표준 SQL과는 일치해요. 자세한 내용은 Modulo 위키피디아 페이지를 참고해요.

예시

다음 예시는 정수와 정수가 아닌 값 모두에서 MOD() 함수의 사용법을 보여줘요:

SELECT MOD(3, 2) AS mod1, MOD(4.5, 1.2) AS mod2;

출력:

+------+------+
| MOD1 | MOD2 |
+------+------+
|    1 |  0.9 |
+------+------+

다음 단계는 각 결과가 어떻게 계산되는지 보여줘요. MOD()는 잘림 기반 나눗셈(몫을 0으로 반올림)을 사용하므로, 나머지는 expr1 - (TRUNC(expr1 / expr2) * expr2)이에요:

  • MOD(3, 2): 3 / 2는 1.5이고, 잘라서 1이 돼요. 나머지는 3 - (1 * 2) = 1이에요.
  • MOD(4.5, 1.2): 4.5 / 1.2는 3.75이고, 잘라서 3이 돼요. 나머지는 4.5 - (3 * 1.2) = 4.5 - 3.6 = 0.9예요.

MOD()는 잘림 기반 나눗셈을 사용하므로 음수 expr1은 음수 나머지를 만들어요:

SELECT MOD(-3, 2) AS neg_mod;

출력:

+---------+
| NEG_MOD |
+---------+
|      -1 |
+---------+

MOD(-3, 2): -3 / 2는 -1.5이고, 잘라서 -1이 돼요. 나머지는 -3 - (-1 * 2) = -3 + 2 = -1이에요.

더 알아보기