DB

[MySQL] 나머지와 정수 나눗셈 함수: MOD, DIV 실전 가이드

인생아 2025. 7. 22. 12:21
반응형

나눗셈 연산은 단순한 산술 계산 그 이상으로 자주 사용된다. 특히 정수 몫과 나머지를 나누는 것은 실무에서 구조적인 데이터를 분할할 때 매우 유용하다.

🔹 MOD(): 나머지 반환 함수

문법

MOD(N, M)
-- 또는 N % M
  • N을 M으로 나눈 나머지를 반환
  • % 연산자와 동일한 기능을 한다

예제

SELECT MOD(10, 3);       -- 결과: 1
SELECT 10 % 3;           -- 결과: 1
SELECT MOD(-10, 3);      -- 결과: -1
SELECT MOD(10, -3);      -- 결과: 1

활용

-- 짝수/홀수 판단
SELECT user_id,
       CASE WHEN MOD(user_id, 2) = 0 THEN '짝수' ELSE '홀수' END AS parity
FROM users;
-- 주차 계산 (7일마다 한 주로 환산)
SELECT created_at,
       MOD(DAY(created_at), 7) AS day_in_week
FROM calendar_log;
반응형

🔸 DIV: 정수 나눗셈 연산자

문법

N DIV M
  • N을 M으로 나눈 정수 몫을 반환 (소수점 버림)
  • FLOOR(N / M)과 같은 효과

예제

SELECT 10 DIV 3;         -- 결과: 3
SELECT 10 DIV 2;         -- 결과: 5
SELECT 10 DIV 5;         -- 결과: 2
SELECT 9 DIV 4;          -- 결과: 2

활용

-- 페이지 번호 계산
SELECT CEIL(post_num / 10) AS page_num
FROM board_posts;
-- 시간(분)을 시:분으로 나누기
SELECT duration,
       duration DIV 60 AS hours,
       MOD(duration, 60) AS minutes
FROM video_list;

🧠 함수 비교 요약

연산 설명 예시 결과
MOD 나머지 계산 MOD(10, 3) 1
DIV 정수 몫 계산 10 DIV 3 3

⚠️ 실무 팁

  • MOD()는 값의 패턴 분류순번 계산에 유용하다.
  • DIV는 페이지 계산, 시간 단위 변환, 범위 그룹핑 등에 자주 쓰인다.
  • MOD는 음수 연산에서 예상과 다를 수 있으니 방향성 체크 필요

💡 실무 예제 조합

순번에 따라 컬럼 색상 다르게 적용

SELECT id,
       CASE MOD(id, 3)
         WHEN 0 THEN 'red'
         WHEN 1 THEN 'green'
         ELSE 'blue'
       END AS color_class
FROM ui_elements;

정수 시간 표시로 변환

-- duration(분)을 시:분 포맷으로 출력
SELECT CONCAT(duration DIV 60, 'h ', MOD(duration, 60), 'm') AS formatted_time
FROM workout_sessions;

🔗 참고 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html

 

반응형