算術関数

算術関数は、型が decimalintlongfloat 、および double のデータに適用されます。

一般に、関数が異なる型の数値引数を受け取った場合、結果の型は最も汎用的な型になります。たとえば、 int 値と double 値を加算すると double 値が返されます。

Virtual DataPort でサポートされている算術関数

ABS

説明

ABS 関数は、数値の絶対値を返します。

構文

ABS( <value:numeric> ):numeric
  • value: 必須。絶対値を計算する数値。

SELECT ABS(-5) as absolute_value
FROM Dual()

absolute_value

5

ACOS

説明

ACOS 関数は、角度のアークコサインを返します。

入力は、 -1.0+1.0 の間の数値でなければなりません。

構文

ACOS( <value:numeric> ):double
  • value: 必須。 decimal 型の値にすることはできません。

SELECT ACOS(0), ACOS(-1), ACOS(1)

acos

acos_1

acos_2

1.57

3.14

0.0

ASIN

説明

ASIN 関数は、角度のアークサインを返します。

入力は、 -1.0+1.0 の間の数値でなければなりません。

構文

ASIN( <value:numeric> ):double
  • value: 必須。 decimal 型の値にすることはできません。

SELECT ASIN(0), ASIN(1), ASIN(-1)

asin

asin_1

asin_2

0.0

1.57

-1.57

ATAN

説明

ATAN 関数は、角度のアークタンジェントを返します。

入力は、 -1.0+1.0 の間の数値でなければなりません。

構文

ATAN( <value:numeric> ):double
  • value: 必須。 decimal 型の値にすることはできません。

SELECT RADIANS(90), ATAN(RADIANS(-90)), ATAN(RADIANS(90))

radians

atan

atan_1

1.57

-1.0

1.0

注釈

関数 RADIANS は、度単位の角度をラジアン単位に変換します。この関数の詳細については、「 RADIANS 」を参照してください。

ATAN2

説明

ATAN2 関数は、直交座標 (x, y) を極座標 (r, theta) に変換します。 -pi+pi の範囲内で y/x のアークタンジェントを計算することで、位相シータを計算します。

構文

ATAN2( <x:numeric>, <y:numeric>):double
  • x: 必須。

  • y: 必須。

x または y のどちらも decimal 型の値にすることはできません。

CEIL

説明

CEIL 関数は、引数以上の最小の整数を返します。

構文

CEIL( <value:decimal> ):long

CEIL( <value:int> ):int

CEIL( <value:long> ):long
  • value: 必須。四捨五入する値。

SELECT CEIL(5.08) as ceil_value
FROM Dual()

ceil_value

6

COS

説明

COS 関数は、ラジアン単位の角度のコサインを返します。

出力は、 -1.0+1.0 の間の double 値となります。

構文

COS( <angle:numeric> ):double
  • angle: 必須。 decimal 型の値にすることはできません。

SELECT COS(0), COS(RADIANS(180))

cos

cos_1

1.0

-1.0

COT

説明

COT 関数は、ラジアン単位の角度のコタンジェントを返します。

構文

COT( <angle:numeric> ):double
  • angle: 必須。

SELECT COT( RADIANS (45))

cot

1.0

DEGREES

説明

DEGREES 関数は、ラジアン単位の角度が与えられると、対応する度単位の角度を返します。

構文

DEGREES( <angle:numeric> ):double
  • angle: 必須。 decimal 型の値にすることはできません。

SELECT DEGREES(0), DEGREES(3.15 * 2)

degrees

degrees_1

0.0

360.96

DIV

説明

DIV 関数は、2 つの数値を除算します。

構文

DIV( <dividend:numeric>, <divisor:numeric> ):numeric
  • dividend: 必須。演算の被除数。

  • divisor: 必須。演算の除数。

例 1

SELECT DIV(10, 2.5) as div_value
FROM Dual();

div_value

4.0

例 2

SELECT (10 / CAST('double', 2)) as div_value
FROM Dual();

div_value

5.0

EXP

説明

EXP 関数は、数値の指数値を返します。

構文

EXP( <value:numeric> ):double
  • value: 必須。

SELECT EXP(0), EXP(1)

exp

exp_1

1.0

2.72

FLOOR

説明

FLOOR 関数は、引数以下の最大の整数を返します。

構文

FLOOR( <value:decimal> ):long

FLOOR( <value:int> ):int

FLOOR( <value:long> ):long
  • value: 必須。四捨五入する値。

SELECT FLOOR(5.98) as floor_value
FROM Dual();

floor_value

5

LN

説明

LN 関数は、値の自然対数 (底 e) を返します。

構文

LN( <value:numeric> ):double
  • value: 必須。 decimal 型の値にすることはできません。

SELECT LN( EXP( 0 ) ), LN ( EXP(1) )
FROM Dual();

ln

ln_1

0.0

1.0

LOG

説明

LOG 関数は、数値の対数を返します。

構文

LOG( <value:numeric> [, <base:numeric> ]):double
  • value: 必須。対数を求める正の実数。 decimal 型の値にすることはできません。

  • base: オプション。指定されていない場合、この関数は底が 10 の数値の対数を返します。

SELECT log(100), log(100, 10);
FROM Dual();

log

log_1

2.0

2.0

MAX

説明

MAX 関数は、引数リスト内の最大値を返します。引数のいずれかが NULL の場合は、NULL を返します。

構文

MAX( <value 1:numeric>, <value 2:numeric> [, <value N:numeric> ]* ):numeric
  • value 1: 必須。

  • value 2: 必須。

  • value N: オプション。1 つ以上の値。

SELECT MAX(5, 10, 3.2) as max_value
FROM Dual();

max_value

10.0

注釈

以前のバージョンの Denodo では、この関数は、すべての引数が NULL の場合にのみ NULL を返していました。以前のバージョンの動作に戻すには、VQL シェルから次のコマンドを実行します。

SET 'com.denodo.vdb.catalog.view.functions.max_min.ignoreNullValuesForComparisons'='true';

この変更は即座に適用されます。再起動する必要はありません。

MIN

説明

MIN 関数は、引数リスト内の最小値を返します。引数のいずれかが NULL の場合は、NULL を返します。

構文

MIN( <value 1:numeric> [, <value N:numeric> ]* ):numeric
  • value 1: 必須。

  • value N: オプション。1 つ以上の値。

SELECT MIN(5, 10, 3.2) as min_value
FROM Dual();

min_value

3.2

注釈

以前のバージョンの Denodo では、関数 MIN は、すべての引数が NULL の場合にのみ NULL を返していました。この動作に戻すには、次のコマンドを実行できます。

SET 'com.denodo.vdb.catalog.view.functions.max_min.ignoreNullValuesForComparisons'='true'

MOD

説明

MOD 関数は、剰余演算の結果、つまり、最初の引数と 2 番目の引数の整数除算の余りを返します。

この関数には挿入バージョンがあり、その演算子は % です。

構文

MOD( <dividend:decimal>, <divisor:decimal> ):decimal

MOD( <dividend:double>, <divisor:double> ):double

MOD( <dividend:float>, <divisor:float> ):double

MOD( <dividend:int>, <divisor:int> ):int

MOD( <dividend:long>, <divisor:int> ):int

MOD( <dividend:long>, <divisor:long> ):long
  • dividend: 必須。

  • divisor: 必須。

次のビュー V について考えてみます。

int_sample

long_sample

1

10

-4

-55

8

70

さらに、次のコマンドで作成されたビュー modView があるとします。

例 1
CREATE VIEW mod_view AS
    SELECT int_sample
        , MOD(int_sample, 2) AS s1
        , long_sample
        , MOD(long_sample, 2) as s2
FROM V;
SELECT *
FROM mod_view

int_sample

s1

long_sample

s2

1

1

10

0

-4

0

-55

-1

8

0

70

0

例 2

SELECT 10%2
FROM mod_view

mod

0

0

0

MULT

説明

MULT 関数は、引数を乗算します。

構文

MULT ( <value 1:numeric>, <value 2:numeric> [, <value N:numeric> ]* ):numeric
  • value 1: 必須。乗算する最初の数値。

  • value 2: 必須。乗算する 2 番目の数値。

  • value N: オプション。乗算する 1 つ以上の引数。

例 1

SELECT MULT(10, 2.5) as mult_value
FROM Dual();

mult_value

25.0

例 2

SELECT (10 * 2.5) as mult_value
FROM Dual();

mult_value

25.0

PI

説明

PI 関数は、精度 double の Pi 値を返します。

構文

PI():double

SELECT PI() as pi_constant
FROM Dual();

pi_constant

3.141592653589793

POWER

説明

POWER 関数は、数値を累乗した結果を返します。

構文

POWER( <number:numeric>, <power:numeric> ):double
  • number: 必須。基本数。

  • power: 必須。底の値に基づくべき乗の指数。

number または power のどちらも decimal 型の値にすることはできません。

SELECT POWER(5, 2) as power_value
FROM Dual();

power_value

25

RADIANS

説明

RADIANS 関数は、特定の度単位の角度が与えられると、対応するラジアン単位の角度を返します。

構文

RADIANS( <angle:numeric> ):double
  • angle: 必須。 decimal 型の値にすることはできません。

SELECT RADIANS(0), RADIANS(360)

radians

radians_1

0.0

6.28

RAND

説明

RAND 関数は、0 と 1 の間のランダムな値を返します。

構文

パラメーターは受け取りません。

ビュー V について考えてみます。

int_sample

1

-4

8

SELECT int_sample, int_sample * RAND() AS random
FROM V

int_sample

random

-4

-3.551409143605859

1

0.6443357973998833

8

1.5061178485934867

ROUND

説明

ROUND 関数は、小数位の右または左の指定桁数に四捨五入した数値を返します。

構文

ROUND( <value:numeric [, n : integer ] ):numeric
  • value: 必須。四捨五入する値。

  • n: オプション。

n を省略すると、 value は第 0 位で四捨五入されます。引数が int 型の場合は、 int 値を返します。引数の型が longfloat 、または double の場合は、 long 値を返します。

n が負の数である場合、 value は小数点の左の桁数に四捨五入されます。この場合、関数は value パラメーターと同じ型の値を返します。つまり、 value の型が int の場合は int 値を返し、 float の場合は float 値を返します。

SELECT ROUND(5.98), ROUND(7.08733, 2), ROUND(315.28, -2)
FROM Dual();

round

round_1

round_2

6

7.09

300.0

SIGN

説明

SIGN 関数は、値が負、ゼロ、または正かに応じてそれぞれ、 -10 、または 1 を返します。この関数を使用すると、数値の符号がわかります。

構文

SIGN( <value:numeric> ):int
  • value: 必須。 NULL の場合、この関数は NULL を返します。

SELECT SIGN(100), SIGN(-50)

sign

sign_1

1

-1

SIN

説明

SIN 関数は、ラジアン単位の角度のサインを返します。

出力は、 -1.0+1.0 の間の double 値となります。

構文

SIN( <angle:numeric> ):double
  • angle: 必須。 decimal 型の値にすることはできません。

SELECT SIN(0), SIN(RADIANS(90))

sin

sin_1

0.0

1.0

SQRT

説明

SQRT 関数は、正の平方根を返します。

構文

SQRT( <value:numeric> ):double
  • value: 必須。平方根を求める数値。 decimal 型の値にすることはできません。

SELECT SQRT(25) as sqrt_value
FROM Dual();

sqrt_value

5.0

SUBTRACT

説明

SUBTRACT 関数は、2 つの数値または 2 つの日時型の値を減算します。

型が localdatetimestamptimestamptz 、または date である 2 つの値を減算すると、2 番目の日付と最初の日付の間の日数が得られます。どちらの日付も同じ日に属する場合は、時刻が異なっていても、この関数は 0 を返します。 time 型の 2 つの値を減算すると、2 つの値の間のミリ秒数を返します。

この関数には、中置記法もあります。つまり、 subtract(a, b)a - b と同じです。

構文

SUBTRACT( <value 1:numeric>, <value 2:numeric> ):numeric

SUBTRACT( <value 1:localdate>, <value 2:localdate> ):long

SUBTRACT( <value 1:timestamp>, <value 2:timestamp> ):long

SUBTRACT( <value 1:timestamptz>, <value 2:timestamptz> ):long

SUBTRACT( <value 1:time>, <value 2:time> ):long

SUBTRACT( <value 1:date>, <value 2:date> ):long
  • value 1: 必須。減算元の最初の値。

  • value 2: 必須。減算する 2 番目の値。

例 1

SELECT SUBTRACT(10, 2.5) as subtract_value
FROM Dual();

subtract_value

7.5

例 2

SELECT (10 - CAST('int', 2.5)) as subtract_value
FROM Dual();

subtract_value

8

例 3

SELECT
    SUBTRACT (
          DATE '2015-01-02'
        , DATE '2015-01-01') as value_1
    , SUBTRACT (
          TIMESTAMP '2015-01-01 01:00'
        , TIMESTAMP '2015-01-01 08:00') as value_2

value_1

value_2

1

0

SUM

説明

SUM 関数は、引数を加算します。

構文

SUM( <value1:numeric, value2:numeric [, valueN:numeric ]* ):numeric
  • value1: 必須。加算する最初の数値。

  • value2: 必須。加算する 2 番目の数値。

  • valueN: オプション。加算する 1 つ以上の引数。

例 1

SELECT SUM(1, CAST('double', 2.5), 4.6) as sum_value
FROM Dual();

sum_value

8.1

例 2

SELECT (1 + CAST('int', 2.9) + 4.6) as sum_value
FROM Dual();

sum_value

7.6

TAN

TAN 関数は、ラジアン単位の角度のタンジェントを返します。

構文

TAN ( <angle:numeric> ):double
  • angle: 必須。

SELECT TAN(0), TAN(radians(45))

tan

tan_1

0.0

1.0

TRUNC

TRUNC 関数は、数値の整数部を返します。

構文

TRUNC( <value:numeric> ):long
  • value: 必須。

SELECT TRUNC(1), TRUNC(2.8), TRUNC(-3.9)

trunc

trunc_1

trunc_2

1

2

-3