Oracle SQL 割り算をした値の余りを求めるMOD関数

Oracle SQLで、割り算をした値の余りを求める方法です。

ORACLE SQL 割り算をした値の余りを求める - MOD 関数

数値を割り算(除算)をした時の余り(剰余)を求めるときに使うのが MOD(モッド/モジュラス) 関数です。

実務では様々なところで使いますが、実際利用されない方は「いつどんな時に使うんだ?」と感じてしまいますよね。よく使われるケースを参考に載せておきます。


MOD関数の仕様

MOD関数の仕様はこのようになっています。

剰余 = MOD ( 余りを求める数値式 [, 割り算を行なう数値式 ] )

箱に入らない商品数を求める場合

例えば、商品の数が 326 個あったとします。これを箱に入れたいとした場合、1箱に入る商品の数は 17 個。

何箱できて、いくつ余るのか、知りたいですよね?こんな時に MOD 関数を利用します。

まずは、箱数を求めましょう。商品数を1箱に入る数で除算します。この時 TRUNC 関数を使って小数点以下を切り捨てます。次に MOD 関数を使用して、余りを求めます。

求め方

TRUNC(商品数 ÷ 1箱に入る数) = 箱数
MOD(商品数, 1箱に入る数) = 余り


SELECT
 TRUNC(商品数 ÷ 1箱に入る数) AS 箱数
,MOD(商品数, 1箱に入る数) AS 余り
FROM DUAL

商品数=326、1箱に入る商品の数=17とした場合、下記のSQLで対応できます。


SELECT
 TRUNC(326 / 17) AS 箱数
,MOD(326, 17) AS 余り
FROM DUAL

下表はサンプルの結果です。

商品数1箱に入る商品数箱数余り
32617193
11717615
931758

こうすると、商品がいくつ余っているのか把握できますね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。