Oracle SQLでMOD関数とPOWER関数を完全攻略!

Oracle Master Silver

本記事では、数値操作において非常に便利なMOD関数POWER関数について、初心者向けに徹底解説します。scottスキーマを活用し、基本的な使い方から実践的な応用例まで幅広く取り上げます。また、読み手が直感的に理解できるよう、SQLの結果例やポイント解説も交えました。


MOD関数: 剰余を簡単に求める関数

MOD関数は、数値を割った際の余りを求めるための関数です。簡単な演算に見えますが、データの分類や条件判定で頻繁に使用されます。


基本構文

MOD(被除数, 除数)
  • 被除数: 割られる数
  • 除数: 割る数

:
MOD(10, 3)1を返します(10を3で割った余りが1)。


実践例: 給与を基準にした分類

次の例では、従業員の給与(SAL)を500で割った余りを計算します。給与が500の倍数である従業員を確認するのにも役立ちます。

SELECT EMPNO, ENAME, SAL, 
MOD(SAL, 500) AS SAL_MOD
FROM EMP;

結果:

EMPNOENAMESALSAL_MOD
7369SMITH800300
7499ALLEN1600100
7521WARD1250250

解説:

  • SAL_MOD列には給与を500で割った余りが表示されます。
  • 余りが0の行は給与が500の倍数であることを意味します。

応用例1: 偶数と奇数の判定

MOD関数を用いることで、数値が偶数か奇数かを簡単に判定できます。

SELECT EMPNO, ENAME, SAL, 
CASE
WHEN MOD(SAL, 2) = 0 THEN '偶数'
ELSE '奇数'
END AS SAL_TYPE
FROM EMP;
EMPNOENAMESALSAL_TYPE
7369SMITH800偶数
7499ALLEN1600偶数
7521WARD1250奇数

応用例2: グループ分け

従業員番号(EMPNO)を使って、3つのグループに分けます。

SELECT EMPNO, ENAME, 
MOD(EMPNO, 3) AS GROUP_NO
FROM EMP;
EMPNOENAMEGROUP_NO
7369SMITH1
7499ALLEN2
7521WARD0

解説:

  • MOD(EMPNO, 3)の結果が0、1、2のいずれかに分類されます。
  • これにより、データの均等分割が可能になります。

POWER関数: 累乗を簡単に計算する関数

POWER関数は、指定した数値を指数で累乗します。指数計算に便利で、数学的な処理が求められるシナリオで頻繁に使用されます。


基本構文

POWER(数値, 指数)
  • 数値: 基数(累乗される数)
  • 指数: 累乗の回数

:
POWER(2, 3)8(2を3乗した結果)を返します。


実践例: 給与の累乗を計算

次の例では、従業員の給与を2乗(平方)と3乗(立方)に計算します。

SELECT EMPNO, ENAME, SAL, 
POWER(SAL, 2) AS SAL_SQUARE,
POWER(SAL, 3) AS SAL_CUBE
FROM EMP;

結果:

EMPNOENAMESALSAL_SQUARESAL_CUBE
7369SMITH800640000512000000
7499ALLEN160025600004096000000
7521WARD125015625001953125000

応用例: 名前の文字数に基づくスコア計算

従業員名の文字数(LENGTH関数)を平方してスコア化します。

SELECT ENAME, LENGTH(ENAME) AS NAME_LENGTH, 
POWER(LENGTH(ENAME), 2) AS NAME_SCORE
FROM EMP;
ENAMENAME_LENGTHNAME_SCORE
SMITH525
ALLEN525
WARD416

MOD関数とPOWER関数を組み合わせた高度な応用

給与の3乗を計算し、その結果を特定の値で割った余りを求めます。これにより、複雑なデータ解析が可能です。

SELECT EMPNO, ENAME, SAL, 
MOD(POWER(SAL, 3), 7) AS RESULT
FROM EMP;
EMPNOENAMESALRESULT
7369SMITH8001
7499ALLEN16001
7521WARD12501

注意点

  • MOD関数では、除数に0を指定するとエラーが発生します(ゼロ除算エラー)。
  • POWER関数で非常に大きな指数を扱うと、結果が大きくなり過ぎてオーバーフローする可能性があります。

演習問題

以下の問題に挑戦し、理解を深めましょう。

問題1:

給与(SAL)が偶数か奇数かを判定するSQLを作成してください。

問題2:

従業員番号(EMPNO)の3乗を計算し、10で割った余りを求めるSQLを作成してください。

問題3:

従業員名の文字数の3乗を計算し、その結果を5で割った余りを求めるSQLを作成してください。


まとめ

  • MOD関数は剰余計算を簡単に行い、データ分類や条件判定に役立ちます。
  • POWER関数は累乗計算を効率的に実現し、数学的な処理や分析に活用できます。
  • 両関数を組み合わせることで、複雑な数値演算が可能になり、分析の幅が広がります。

scottスキーマを使った例を参考に、実際にSQLを実行してみてください!関数を使いこなすことで、SQLスキルをさらに向上させることができます。

[参考]
Oracle Database SQL言語リファレンス 19c

コメント

タイトルとURLをコピーしました