ClickHouse/docs/ja/sql-reference/functions/math-functions.md

1012 lines
19 KiB
Markdown
Raw Normal View History

2024-11-18 02:58:58 +00:00
---
slug: /ja/sql-reference/functions/math-functions
sidebar_position: 125
sidebar_label: 数学関数
---
# 数学関数
## e
$e$[オイラー数](https://en.wikipedia.org/wiki/Euler%27s_constant))を返します。
**構文**
```sql
e()
```
**返される値**
型: [Float64](../data-types/float.md)。
## pi
$\pi$[パイ](https://en.wikipedia.org/wiki/Pi))を返します。
**構文**
```sql
pi()
```
**返される値**
型: [Float64](../data-types/float.md)。
## exp
$x$を指定した引数として、$e^{x}$を返します。
**構文**
```sql
exp(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**例**
クエリ:
```sql
SELECT round(exp(-1), 4);
```
結果:
```response
┌─round(exp(-1), 4)─┐
│ 0.3679 │
└───────────────────┘
```
**返される値**
型: [Float*](../data-types/float.md)。
## log
引数の自然対数を返します。
**構文**
```sql
log(x)
```
別名: `ln(x)`
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## exp2
指定した引数の2のべき乗を返します。
**構文**
```sql
exp2(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## intExp2
[`exp`](#exp) のように挙動しますが、UInt64を返します。
**構文**
```sql
intExp2(x)
```
## log2
引数の二進対数を返します。
**構文**
```sql
log2(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## exp10
指定した引数の10のべき乗を返します。
**構文**
```sql
exp10(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## intExp10
[`exp10`](#exp10) のように挙動しますが、UInt64を返します。
**構文**
```sql
intExp10(x)
```
## log10
引数の十進対数を返します。
**構文**
```sql
log10(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## sqrt
引数の平方根を返します。
```sql
sqrt(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## cbrt
引数の立方根を返します。
```sql
cbrt(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## erf
`x` が非負である場合、$erf(\frac{x}{\sigma\sqrt{2}})$ は、標準偏差 $\sigma$ を持つ正規分布において、期待値から `x` を超える値を取る確率です。
**構文**
```sql
erf(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
**例**
3 sigma ルール)
``` sql
SELECT erf(3 / sqrt(2));
```
```result
┌─erf(divide(3, sqrt(2)))─┐
│ 0.9973002039367398 │
└─────────────────────────┘
```
## erfc
大きな `x` 値に対して精度を失うことなく $1-erf(x)$ に近い数値を返します。
**構文**
```sql
erfc(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## lgamma
ガンマ関数の対数を返します。
**構文**
```sql
lgamma(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## tgamma
ガンマ関数を返します。
**構文**
```sql
gamma(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## sin
引数の正弦を返します。
**構文**
```sql
sin(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
**例**
クエリ:
```sql
SELECT sin(1.23);
```
```response
0.9424888019316975
```
## cos
引数の余弦を返します。
**構文**
```sql
cos(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## tan
引数の正接を返します。
**構文**
```sql
tan(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## asin
引数の逆正弦を返します。
**構文**
```sql
asin(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## acos
引数の逆余弦を返します。
**構文**
```sql
acos(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## atan
引数の逆正接を返します。
**構文**
```sql
atan(x)
```
**引数**
- `x` - [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
型: [Float*](../data-types/float.md)。
## pow
$x^y$ を返します。
**構文**
```sql
pow(x, y)
```
別名: `power(x, y)`
**引数**
- `x` - [(U)Int8/16/32/64](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)
- `y` - [(U)Int8/16/32/64](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)
**返される値**
型: [Float64](../data-types/float.md)。
## cosh
引数の[双曲線余弦](https://in.mathworks.com/help/matlab/ref/cosh.html)を返します。
**構文**
``` sql
cosh(x)
```
**引数**
- `x` — 角度(ラジアン)。区間の値: $-\infty \lt x \lt +\infty$。[ (U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 区間: $1 \le cosh(x) \lt +\infty$。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT cosh(0);
```
結果:
```result
┌─cosh(0)──┐
│ 1 │
└──────────┘
```
## acosh
[inverse hyperbolic 余弦](https://www.mathworks.com/help/matlab/ref/acosh.html)を返します。
**構文**
``` sql
acosh(x)
```
**引数**
- `x` — 角度の双曲線余弦。区間の値: $1 \le x \lt +\infty$。[ (U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 角度(ラジアン)。区間の値: $0 \le acosh(x) \lt +\infty$。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT acosh(1);
```
結果:
```result
┌─acosh(1)─┐
│ 0 │
└──────────┘
```
## sinh
[双曲線正弦](https://www.mathworks.com/help/matlab/ref/sinh.html)を返します。
**構文**
``` sql
sinh(x)
```
**引数**
- `x` — 角度(ラジアン)。区間の値: $-\infty \lt x \lt +\infty$。[ (U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 区間の値: $-\infty \lt sinh(x) \lt +\infty$。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT sinh(0);
```
結果:
```result
┌─sinh(0)──┐
│ 0 │
└──────────┘
```
## asinh
[逆双曲線正弦](https://www.mathworks.com/help/matlab/ref/asinh.html)を返します。
**構文**
``` sql
asinh(x)
```
**引数**
- `x` — 角度の双曲線正弦。区間の値: $-\infty \lt x \lt +\infty$。[ (U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 角度(ラジアン)。区間の値: $-\infty \lt asinh(x) \lt +\infty$。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT asinh(0);
```
結果:
```result
┌─asinh(0)─┐
│ 0 │
└──────────┘
```
## tanh
[双曲線正接](https://www.mathworks.com/help/matlab/ref/tanh.html)を返します。
**構文**
``` sql
tanh(x)
```
**引数**
- `x` — 角度(ラジアン)。区間の値: $-\infty \lt x \lt +\infty$。[ (U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 区間の値: $-1 \lt tanh(x) \lt 1$。
型: [Float*](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT tanh(0);
```
結果:
```result
0
```
## atanh
[逆双曲線正接](https://www.mathworks.com/help/matlab/ref/atanh.html)を返します。
**構文**
``` sql
atanh(x)
```
**引数**
- `x` — 角度の双曲線正接。区間の値: $-1 \lt x \lt 1$。[ (U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 角度(ラジアン)。区間の値: $-\infty \lt atanh(x) \lt +\infty$。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT atanh(0);
```
結果:
```result
┌─atanh(0)─┐
│ 0 │
└──────────┘
```
## atan2
[atan2](https://en.wikipedia.org/wiki/Atan2) を、ユークリッド平面における角度として返し、ラジアンで表されますが、正の x 軸と点 `(x, y) ≠ (0, 0)` への光線との間のものです。
**構文**
``` sql
atan2(y, x)
```
**引数**
- `y` — 光線が通過する点の y 座標。 [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
- `x` — 光線が通過する点の x 座標。 [(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 角度 `θ` の値として、$-\pi \lt 0 \le \pi$ の区間で、ラジアンで表されます。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT atan2(1, 1);
```
結果:
```result
┌────────atan2(1, 1)─┐
│ 0.7853981633974483 │
└────────────────────┘
```
## hypot
直角三角形の斜辺の長さを返します。[Hypot](https://en.wikipedia.org/wiki/Hypot) は非常に大きな数や非常に小さな数を平方する際の問題を回避します。
**構文**
``` sql
hypot(x, y)
```
**引数**
- `x` — 直角三角形の一つのカテート。[(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
- `y` — 直角三角形のもう一つのカテート。[(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 直角三角形の斜辺の長さ。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT hypot(1, 1);
```
結果:
```result
┌────────hypot(1, 1)─┐
│ 1.4142135623730951 │
└────────────────────┘
```
## log1p
`log(1+x)` を計算します。 [計算](https://en.wikipedia.org/wiki/Natural_logarithm#lnp1) `log1p(x)` は、小さな値の x に対して `log(1+x)` よりも精度が高いです。
**構文**
``` sql
log1p(x)
```
**引数**
- `x` — 値の範囲: $-1 \lt x \lt +\infty$。[(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md) または [Decimal*](../data-types/decimal.md)。
**返される値**
- 値の範囲: $-\infty < log1p(x) \lt +\infty$。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT log1p(0);
```
結果:
```result
┌─log1p(0)─┐
│ 0 │
└──────────┘
```
## sign
実数の符号を返します。
**構文**
``` sql
sign(x)
```
**引数**
- `x` — 値は $-\infty$ から $+\infty$ まで。ClickHouse のすべての数値型をサポートしています。
**返される値**
- `x < 0` の場合は -1
- `x = 0` の場合は 0
- `x > 0` の場合は 1
型: [Int8](../data-types/int-uint.md)。
**例**
ゼロ値の符号:
``` sql
SELECT sign(0);
```
結果:
```result
┌─sign(0)─┐
│ 0 │
└─────────┘
```
正の値の符号:
``` sql
SELECT sign(1);
```
結果:
```result
┌─sign(1)─┐
│ 1 │
└─────────┘
```
負の値の符号:
``` sql
SELECT sign(-1);
```
結果:
```result
┌─sign(-1)─┐
│ -1 │
└──────────┘
```
## sigmoid
[sigmoid 関数](https://en.wikipedia.org/wiki/Sigmoid_function)を返します。
**構文**
```sql
sigmoid(x)
```
**パラメータ**
- `x` — 入力値。範囲は $-\infty \lt x \lt +\infty$。[(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md), または [Decimal*](../data-types/decimal.md)。
**返される値**
- 0から1の間の sigmoid 曲線に沿った対応する値。[Float64](../data-types/float.md)。
**例**
クエリ:
``` sql
SELECT round(sigmoid(x), 5) FROM (SELECT arrayJoin([-1, 0, 1]) AS x);
```
結果:
```result
0.26894
0.5
0.73106
```
## degrees
ラジアンを度に変換します。
**構文**
``` sql
degrees(x)
```
**引数**
- `x` — 入力値(ラジアン)。[(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md), または [Decimal*](../data-types/decimal.md)。
- `x` — 入力値(ラジアン)。[(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md), または [Decimal*](../data-types/decimal.md)。
**返される値**
- 度で表された値。[Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT degrees(3.141592653589793);
```
結果:
```result
┌─degrees(3.141592653589793)─┐
│ 180 │
└────────────────────────────┘
```
## radians
度をラジアンに変換します。
**構文**
``` sql
radians(x)
```
**引数**
- `x` — 入力値(度)。[(U)Int*](../data-types/int-uint.md), [Float*](../data-types/float.md), または [Decimal*](../data-types/decimal.md)。
**返される値**
- ラジアンで表された値。
型: [Float64](../data-types/float.md#float32-float64)。
**例**
``` sql
SELECT radians(180);
```
結果:
```result
┌──────radians(180)─┐
│ 3.141592653589793 │
└───────────────────┘
```
## factorial
整数値の階乗を計算します。UInt(8|16|32|64) および Int(8|16|32|64) を含む任意のネイティブ整数型で動作します。戻りの型は UInt64 です。
0 の階乗は 1 です。同様に、`factorial()` 関数は任意の負の値に対して 1 を返します。入力引数の最大正の値は 20 で、21 以上の値は例外をスローします。
**構文**
``` sql
factorial(n)
```
**例**
``` sql
SELECT factorial(10);
```
結果:
```result
┌─factorial(10)─┐
│ 3628800 │
└───────────────┘
```
## width_bucket
ヒストグラムにおいて、`operand` が `low` から `high` までの範囲に分割された `count` 等幅のバケットのうち、どのバケットに属するかを返します。`operand < low` の場合は `0` を返し、`operand >= high` の場合は `count+1` を返します。
`operand`、`low`、`high` は任意のネイティブ数値型にすることができます。 `count` は符号なしのネイティブ整数型にすることができ、その値はゼロであってはなりません。
**構文**
```sql
widthBucket(operand, low, high, count)
```
別名: `WIDTH_BUCKET`
**例**
``` sql
SELECT widthBucket(10.15, -8.6, 23, 18);
```
結果:
```result
┌─widthBucket(10.15, -8.6, 23, 18)─┐
│ 11 │
└──────────────────────────────────┘
```
## proportionsZTest
二つの母集団 `x``y` の比率を比較するための統計的検定である2比率Z検定の統計量を返します。
**構文**
```sql
proportionsZTest(successes_x, successes_y, trials_x, trials_y, conf_level, pool_type)
```
**引数**
- `successes_x`: 母集団 `x` における成功の数。 [UInt64](../data-types/int-uint.md)。
- `successes_y`: 母集団 `y` における成功の数。 [UInt64](../data-types/int-uint.md)。
- `trials_x`: 母集団 `x` における試行の数。 [UInt64](../data-types/int-uint.md)。
- `trials_y`: 母集団 `y` における試行の数。 [UInt64](../data-types/int-uint.md)。
- `conf_level`: 検定における信頼水準。 [Float64](../data-types/float.md)。
- `pool_type`: プール方式(標準誤差の推定方式)。`unpooled` または `pooled` のいずれか。 [String](../data-types/string.md)。
:::note
引数 `pool_type` に関して: プールされたバージョンでは、2つの比率が平均され、1つの比率だけが標準誤差を推定するために使用されます。プールされていないバージョンでは、2つの比率が別々に使用されます。
:::
**返される値**
- `z_stat`: Z 統計量。 [Float64](../data-types/float.md)。
- `p_val`: P 値。 [Float64](../data-types/float.md)。
- `ci_low`: 下側の信頼区間。 [Float64](../data-types/float.md)。
- `ci_high`: 上側の信頼区間。 [Float64](../data-types/float.md)。
**例**
クエリ:
```sql
SELECT proportionsZTest(10, 11, 100, 101, 0.95, 'unpooled');
```
結果:
```response
┌─proportionsZTest(10, 11, 100, 101, 0.95, 'unpooled')───────────────────────────────┐
│ (-0.20656724435948853,0.8363478437079654,-0.09345975390115283,0.07563797172293502) │
└────────────────────────────────────────────────────────────────────────────────────┘
```