集約関数
集約関数は入力値の集合から単一の結果を計算します。通常は GROUP BY
句と併用されます。
avg
名前 | 引数の型 | 戻り値の型 | 説明 |
---|
avg(expr e) | numeric | numeric | NULL でないすべての入力値の平均 (算術平均) を計算します。 |
max
名前 | 引数の型 | 戻り値の型 | 説明 |
---|
max(expr e) | variable | variable | NULL でない入力値の最大値を計算します。入力値の型は相互に比較可能である必要があります。 |
min
名前 | 引数の型 | 戻り値の型 | 説明 |
---|
min(expr e) | variable | variable | NULL でない入力値の最小値を計算します。入力値の型は相互に比較可能である必要があります。 |
sum
名前 | 引数の型 | 戻り値の型 | 説明 |
---|
sum(expr e) | numeric | numeric | NULL でない入力値の合計を計算します。 |
count
名前 | 引数の型 | 戻り値の型 | 説明 |
---|
count(expr e) | numeric | integer | 入力値が NULL でない行の数を計算します。 |
count(distinct expr e1, e2 …) | | integer | NULL でない入力値の個数を、重複を除いて数えます。 |
count(*) | | integer | 入力行数を計算します。 |
string_agg
名前 | 引数の型 | 戻り値の型 | 説明 |
---|
string_agg(expr e, delimiter e) | string, string | string | 入力値を区切り文字で連結します。 |
array_agg
名前 | 引数の型 | 戻り値の型 | 説明 |
---|
array_agg(expr e) | variable | array | 入力値を配列に連結します。 |
スカラー関数
これらの関数は行ごとに 1 つの値を返します。
文字列関数と演算子
名前 | 戻り値の型 | 説明 |
---|
upper(text s) | text | s を大文字に変換します。 |
lower(text s) | text | s を小文字に変換します。 |
length(text s) | integer | s の文字数を数えます。 |
concat(expr x, y, …) | text | 指定された式を連結します。 |
substr(expr s, numeric start, numeric numChars) | text | s の部分文字列を返します。開始位置 start から、最大 numChars 文字 (指定された場合) までを取得します。start は 1 始まりのインデックスなので、substr('hello', 2) は 'ello' を返します。開始位置が 1 未満の場合は 1 として扱われます。結果は文字範囲 [start, start+numChars] を取ることで計算され、いずれかの値が 1 未満なら 1 として扱われます。つまり、substr('hello', -2, 4) は 'h' を返します。 |
replace(text s, text from, text to) | text | s 中の部分文字列 from をすべて部分文字列 to に置換します。 |
regexp_replace(text s, text pattern, text replacement) | text | s 中で POSIX 正規表現 pattern に一致する部分を replacement に置換します。Go の 正規表現構文 をサポートします。 |
reverse(expr text) | string | 文字列を反転します (brown → nworb)。 |
md5(expr text) | string | 文字列の MD5 ハッシュを計算し、16 進数で返します。 |
char_length(str text) | integer | str の文字数を返します。 |
left(str text, n int) | text | str の先頭 n 文字を返します。n が負のときは、末尾の |
right(str text, n int) | text | str の末尾 n 文字を返します。n が負のときは、先頭の |
ltrim(str text [, characters text]) | text | str の先頭から、characters (既定ではスペース) に含まれる文字だけで構成される最長の並びを取り除きます。 |
rtrim(str text [, characters text]) | text | str の末尾から、characters (既定ではスペース) に含まれる文字だけで構成される最長の並びを取り除きます。 |
trim([leading | trailing | both] [characters] from str) |
sort_order_ip(ip text) | text | IPv4 と IPv6 の範囲に対する並び順を表す文字列を返します。 |
数学関数と演算子
名前 | 戻り値の型 | 説明 |
---|
abs(numeric n) | integer | n の絶対値を返します。 |
round(numeric n, [s]) | numeric | n を小数点以下 s 桁に丸めます。 |
mod(numeric x, numeric y) | integer | x / y の余りを返します。 |
floor(numeric n) | numeric | n 以下で最も近い整数を返します。 |
ceil(numeric n) | numeric | n 以上で最も近い整数を返します。 |
power(numeric n, numeric s) | numeric | n を s 乗します。 |
ln(numeric n) | numeric | n の自然対数を計算します。 |
log(numeric n) | numeric | n の常用対数 (底 10) を計算します。 |
log2(numeric n) | numeric | n の底 2 の対数を計算します。 |
exp(numeric n) | numeric | 数学定数 e の n 乗を返します。 |
sqrt(numeric n) | numeric | n の平方根を計算します。 |
配列関数と演算子
名前 | 戻り値の型 | 説明 |
---|
array_length(array a) | integer | 各行について、配列 a の長さを返します。 |
array_contains(array a, expr e) | boolean | 各行について、式 e の評価結果が配列 a に含まれていれば true を返します。 |
array_cat(array a, array b) | array | 配列 a と配列 b の要素を結合した新しい配列を返します。 |
array_append(array a, expr e) | array | 入力配列の全要素に続けて要素 e を追加した新しい配列を返します。 |
string_to_array(text s, delimiter, [,nullString]) | array | 入力文字列 s を指定した区切り文字で分割し、部分文字列の配列を返します。第 3 引数 nullString は省略可能で、指定した部分文字列を NULL に置換します。 |
array_to_string(array a, delimiter, [,nullString]) | string | 指定した区切り文字と (任意の) null 文字列を用いて配列要素を連結します。 |
unnest(array a) | variable | 配列の各要素を 別々の行として返します。戻り値の型は配列の要素型です。
unnest はクエリの SELECT 句でのみ使用できます。unnest と一緒に他の列を SELECT した場合、テーブルの各行の値は、展開された各要素ごとに繰り返されます。複数列を展開する場合、展開列同士は行ごとに対応付けられ、短い配列の不足分には NULL が補われます。 |
日付/時刻 関数と演算子
名前 | 戻り値の型 | 説明 |
---|
date_trunc(string precision, timestamp t) | timestamp | timestamp を指定の precision (“second”, “minute”, “hour”, “day”, “week”, “month”, “year”) に切り詰めます。 |
date_diff(string precision, timestamp t, timestamp t) | integer | 指定した精度で、2 つの日時の差を返します。 |
to_timestamp(numeric n) | timestamp | n を秒単位の時刻とみなして timestamp に変換します。 |
条件式
名前 | 戻り値の型 | 説明 |
---|
coalesce(expr x, y, …) | variable | 最初の NULL でない式を返します。 |
nullif(expr x, expr y) | variable | 2 つの引数が等しい場合は NULL を返します。そうでない場合は x を返します。 |
JSON 関数と演算子
名前 | 戻り値の型 | 説明 |
---|
json_extract_path_text(text json, text path…) | text | 指定したパスで JSON のサブ オブジェクトを特定し、テキストとして抽出します。動作は、同名の Postgres 関数 と同等です。たとえば、json_extract_path_text(col, ‘forest') は、col の各 JSON オブジェクトに対してキー forest の値を返します。JSON 配列の構文例は下記を参照してください。 |
json_extract_path(text json, text path…) | json | json_extract_path_text と同じ機能ですが、戻り値は text 型ではなく JSON 型の列になります。 |
json_build_object(key1 text, value1 json/text/int/float, key2 text, value2 json/text/int/float, …) | json | 渡された引数に基づいて JSON オブジェクトを構築します。関数の引数は、生成する JSON オブジェクトのキーと値を、キー→値の順に交互に指定します。 |
row_to_json(table) | json | テーブルの各行を JSON 値として表現したものを返します。JSON のキーは列名、値は各行の各列の値です。
注記: row_to_json は列ではなくテーブル名を受け取ります。例: SELECT row_to_json(<table>) FROM <table> |
JSON 配列
col
の各 JSON オブジェクト (または行) について、JSON 配列の 0 番目の要素にあるキー forest
の値を返します。
json_extract_path_text(col, ‘0', ‘forest')