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

🔹 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
반응형
'DB' 카테고리의 다른 글
| [MySQL] 숫자형 변환 함수: CAST, CONVERT로 타입 바꾸기 (0) | 2025.07.22 |
|---|---|
| [MySQL] 숫자 포맷 함수: FORMAT, TRUNCATE 차이와 사용법 (0) | 2025.07.22 |
| [MySQL] 수학 계산 함수: SQRT, POW, LOG, EXP 정리 (0) | 2025.07.22 |
| [MySQL] 난수 생성 함수: RAND, UUID 실무 활용법 (0) | 2025.07.22 |
| [MySQL] 최대/최소/중간값: GREATEST, LEAST, INTERVAL 비교 (1) | 2025.07.21 |
| [MySQL] 숫자 절댓값과 부호 함수: ABS, SIGN 활용법 (1) | 2025.07.21 |
| [MySQL] 숫자 반올림 함수: ROUND, CEIL, FLOOR 완전 정리 (0) | 2025.07.21 |
| [MySQL] 고급 문자열 함수: FIELD, ELT, FIND_IN_SET 정리 (1) | 2025.07.19 |