본문 바로가기
기획자가 알아야 할 IT지식/기획자가 알아야 할 SQL

16강. 나머지 값을 구하는 MOD 함수 활용하기

by 일잘러로 살기 2025. 3. 22.

SQL에서 숫자를 다룰 때 나머지를 구하는 연산이 필요한 경우가 많습니다.
이때 사용하는 함수가 바로 MOD 함수입니다.


✅ 1. MOD 함수란?

MOD(숫자1, 숫자2) 함수는 숫자1을 숫자2로 나눈 후, 나머지 값을 반환합니다.

  • 숫자1: 나눠지는 수 (피제수, Dividend)
  • 숫자2: 나누는 수 (제수, Divisor)
  • 결과값: 숫자1 ÷ 숫자2 후 나머지 값을 반환

✅ 2. MOD 함수 기본 사용법

📌 나머지 값 구하기

SELECT MOD(10, 3) AS result FROM dual;


📌 실행 결과

설명: 10 ÷ 3 = 3이고, 나머지가 1이므로 MOD(10, 3) = 1이 됩니다.


📌 숫자가 나누어떨어지는 경우 (나머지 0)

SELECT MOD(12, 4) AS result FROM dual;


📌 실행 결과

설명: 12 ÷ 4 = 3이고 나머지가 없으므로 MOD(12, 4) = 0이 됩니다.
→ 이를 활용하면 **"특정 숫자로 나누어떨어지는 경우"**를 쉽게 찾을 수 있습니다.


✅ 3. MOD 함수 활용 사례 3가지

(1) 짝수와 홀수 구별하기

MOD(숫자, 2)를 사용하면 짝수인지 홀수인지 쉽게 판별할 수 있습니다.

SELECT employee_id, salary,
       CASE
           WHEN MOD(salary, 2) = 0 THEN '짝수 연봉'
           ELSE '홀수 연봉'
       END AS salary_type
  FROM employees;


📌 실행 결과

설명: 급여를 2로 나누었을 때 나머지가 0이면 짝수, 1이면 홀수로 분류할 수 있습니다.


(2) 매월 일정한 주기로 데이터 그룹 나누기

예를 들어, 직원 ID를 3개의 그룹(1조, 2조, 3조) 으로 나누고 싶을 때 MOD(직원번호, 3)을 사용하면 편리합니다.

SELECT employee_id, name,
       CASE
           WHEN MOD(employee_id, 3) = 0 THEN '1조'
           WHEN MOD(employee_id, 3) = 1 THEN '2조'
           ELSE '3조'
       END AS team
  FROM employees;


📌 실행 결과

설명: MOD(직원번호, 3)을 이용해 1조, 2조, 3조를 순환 배정했습니다.
→ 이를 활용하면 회전 근무, 조 편성, 순번 정하기 등의 작업이 가능해집니다.


(3) 특정 주기로 데이터 필터링하기 (ex. 홀수 번째 행만 출력)

예를 들어, 홀수 번째 주문만 조회하고 싶다면 MOD(주문번호, 2) = 1 조건을 사용하면 됩니다.

SELECT order_id, customer_name, total_price
  FROM orders
 WHERE MOD(order_id, 2) = 1;


📌 실행 결과

설명: MOD(order_id, 2) = 1 조건을 사용하면 홀수 번째 주문만 필터링할 수 있습니다.
→ 이를 활용하면 특정 간격으로 데이터를 선택할 수 있습니다.


✅ 4. 정리

MOD(숫자1, 숫자2) → 숫자1을 숫자2로 나눈 후 나머지를 반환
짝수/홀수 판별 가능 → MOD(숫자, 2) = 0이면 짝수, 1이면 홀수
데이터 그룹 나누기 → MOD(숫자, n)을 사용해 n개의 그룹으로 배정 가능
특정 패턴의 데이터 필터링 → MOD(숫자, n) = x 조건으로 원하는 데이터만 추출 가능