データベース千夜一夜第23回

SQLと関数~数学関数とシステム関数 長谷川裕行
有限会社 手國堂

数学関数

数値の切り上げや切り捨て、累乗、平方根や三角関数など数学的な計算を行うための関数群です。役割も名称も、CやVBなどに用意されている関数群とほぼ同じです。一般的な事務処理に必要な関数を中心に紹介しておきます。


- 四捨五入~ROUND -

機能:指定した桁数で数値を丸めます。

書式:ROUND(<数値>, <桁数>)

引数
 <数値>:bit型以外の数値型
 <桁数>:正の値の場合は小数点以下の桁数、負の値なら整数部の桁数となり、<数値>はその桁位置で丸められます。

戻り値:引数<数値>と同じ型

例:テーブル「商品_mr」の「販売単価」の値を2割引し、2桁目で四捨五入します。

a)「販売単価」を2割引(0.8倍)
  SELECT
  商品ID, 品名, 販売単価,
  販売単価 * 0.8 AS 割引価格
  FROM 商品_mr

b)2割引した結果を整数部2桁目で四捨五入
  SELECT
  商品ID, 品名, 販売単価,
  ROUND((販売単価 * 0.8), -2) AS 割引価格
  FROM 商品_mr



- 切り捨て~ROUND -

機能:ROUND関数の第3引数に「0以外の値」を設定すると、指定した桁数で数値を切り捨てます。

書式:ROUND(<数値>, <桁数>, <機能>)

引数
 <数値>:bit型以外の数値型
 <桁数>:正の値の場合は小数点以下の桁数、負の値なら整数部の桁数となり、<数値>はその桁位置で切り捨てられます。
 <機能>:0以外の値

戻り値:引数<数値>と同じ型

例:テーブル「商品_mr」の「販売単価」の値を2割引し、2桁目で切り捨てて100円単位の価格にします。

  SELECT
  商品ID, 品名, 販売単価,
  ROUND((販売単価 * 0.8), -2, 1) AS 割引価格
  FROM 商品_mr



- 小数部の切り上げ~CEILING -

機能:小数の値を切り上げて整数にします。

書式:CEILING(<数値>)

引数:bit型以外の数値型

戻り値:引数<数値>と同じ型

例:テーブル「商品_mr」の「仕入単価」の値を32%増しした値を切り上げて「新販売価格」とします。

a)単純に32%増しした場合は端数が出る
  SELECT
  商品ID, 品名, 仕入単価,
  (仕入単価 + (仕入単価 * 0.32)) AS 新販売単価
  FROM 商品_mr

b)小数部を切り上げて整数にする
  SELECT
  商品ID, 品名, 仕入単価,
  CEILING((仕入単価 + (仕入単価 * 0.32))) AS 新販売単価
  FROM 商品_mr



- 小数の切り捨て~FLOOR -

機能:小数の値を切り捨てて整数にします。

書式:FLOOR(<数値>)

引数:bit型以外の数値型

戻り値:引数<数値>と同じ型

例:テーブル「商品_mr」の「仕入単価」の値を32%増しした値を切り捨てて「新販売価格」とします。

  SELECT
  商品ID, 品名, 仕入単価,
  FLOOR((仕入単価 + (仕入単価 * 0.32))) AS 新販売単価
  FROM 商品_mr



- 平均~AVG -

機能:指定したフィールドの値の平均を返します。NULL値は無視されます。

書式:AVG(<フィールド>)

引数:フィールド名を示す文字列

戻り値:除算を行うため、引数の型と計算結果によって異なります。

例:テーブル「累積売上_fx」から「金額」フィールドの平均を求めます。

  SELECT AVG(金額) AS 金額平均 FROM 累積売上_fxAVG

第21回「データの集計(3)~集計関数とグループ化」で集計関数として紹介したとおりです。


- レコード件数~COUNT関数 -

機能:指定したフィールドのレコード件数を返します。

書式:COUNT(<フィールド | *>)

引数:フィールド名を示す文字列または*記号

戻り値:int型

例:テーブル「累積売上_fx」のレコード件数を求めます。

  SELECT COUNT(*) FROM 累積売上_fx

引数にフィールド名を指定すると、そのフィールドに値の入っている(Nullではない)レコードの数をカウントします。単にレコード件数を求めるだけなら、引数に*を与えます。第21回「データの集計(3)~集計関数とグループ化」で集計関数として紹介したとおりです。


- 2乗~SQUARE -

機能:値の2乗を返します。

書式:SQUARE(<数値>)

引数:float型の数値

戻り値:float型


- 平方根~SQRT -

機能:値の平方根を返します。

書式:SQRT(<数値>)

引数:float型の数値

戻り値:float型


- 乱数の発生~RAND -

機能:0~1の間で小数の乱数を発生します。

書式:RAND(<シード値>)

引数:生成する乱数の元となる整数(tinyint、smallint、int)

戻り値:float型

RAND関数は、シード値を変更しない限り連続して呼び出しても同じ値を生成します。同じクエリーやプロシージャ内で連続して乱数を発生させるには、RAND関数を呼び出すたびにシード値を変更します。


- 円周率~PI -

機能:円周率(π)を返します。

書式:PI()

戻り値:float型の定数


- 絶対値~ABS -

機能:値の正の絶対値を返します。

書式:ABS(<数値>)

引数:bit型以外の数値

戻り値:引数の<値>と同じ型


- 三角関数 -

SIN、COS、TANなどの三角関数を計算して返します。これら三角関数では、一般的な角度ではなくラジアン(radian)と呼ばれる平面角を用います。ラジアンと通常の角度とは、後述するRADIANS関数とDEGREES関数でそれぞれ求められます。

一般的な事務処理で三角関数を用いることはあまりないので、各関数の機能を簡単に紹介しておきます。

・SIN

機能:角度(ラジアン単位)のサイン(正弦)を返します。

書式:SIN(<角度>)

引数:float型のラジアン値

戻り値:float型

・COS

機能:角度(ラジアン単位)のコサイン(余弦)を返します。

書式:COS(<角度>)

引数:float型のラジアン値

戻り値:float型

・TAN

機能:角度(ラジアン単位)のタンジェント(正接)を返します。

書式:TAN(<角度>)

引数:float型のラジアン値

戻り値:float型

・COT

機能:角度(ラジアン単位)のコタンジェント(タンジェントの逆数、余接)を返します。

書式:COT(<角度>)

引数:float型のラジアン値

戻り値:float型


- 角度をラジアン値に~RADIANS -

機能:「度」単位の角度をラジアンに変換します。

書式:RADIANS(<角度>)

引数:bit型以外の数値

戻り値:引数と同じ型


- ラジアン値を角度に~DEGREES -

機能:ラジアンを「度」単位の角度に変換します。

書式:DEGREES(<ラジアン値>)

引数:bit型以外の数値

戻り値:引数と同じ型



トップページ
数学関数
四捨五入~ROUND
切り捨て~ROUND
小数部の切り上げ~CEILING
小数の切り捨て~FLOOR
平均~AVG
レコード件数~COUNT関数
2乗~SQUARE
平方根~SQRT
乱数の発生~RAND
円周率~PI
絶対値~ABS
三角関数
角度をラジアン値に~RADIANS
ラジアン値を角度に~DEGREES
システム関数
あとがき
Copyright © MESCIUS inc. All rights reserved.