Oracle SQL 割り算をした値の余りを求めるMOD関数
Oracle SQLで、割り算をした値の余りを求める方法です。
数値を割り算(除算)をした時の余り(剰余)を求めるときに使うのが 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箱に入る商品数 | 箱数 | 余り |
---|---|---|---|
326 | 17 | 19 | 3 |
117 | 17 | 6 | 15 |
93 | 17 | 5 | 8 |
こうすると、商品がいくつ余っているのか把握できますね。
おつかれさまでした。