MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

12.20.1 集計関数の説明

このセクションでは、値のセットを操作する集計関数について説明します。 多くの場合、値をサブセットにグループ化するために GROUP BY 句とともに使用されます。

表 12.25 「集計関数」

名前 説明
AVG() 引数の平均値を返します
BIT_AND() ビット単位 AND を返します
BIT_OR() ビット単位の OR を返します
BIT_XOR() ビット単位 XOR を返します
COUNT() 返された行数のカウントを返します
COUNT(DISTINCT) 異なる値のカウントを返します
GROUP_CONCAT() 連結された文字列を返します
JSON_ARRAYAGG() 結果セットを単一の JSON 配列として返します
JSON_OBJECTAGG() 結果セットを単一の JSON オブジェクトとして返します
MAX() 最大値を返します
MIN() 最小値を返します
STD() 母標準偏差を返します
STDDEV() 母標準偏差を返します
STDDEV_POP() 母標準偏差を返します
STDDEV_SAMP() 標本標準偏差を返します
SUM() 集計を返します
VAR_POP() 母標準分散を返します
VAR_SAMP() 標本分散を返します
VARIANCE() 母標準分散を返します

特に明記されていないかぎり、集計関数は NULL 値を無視します。

GROUP BY 句を含まないステートメントで集計関数を使用する場合、すべての行でのグループ化と同等です。 詳細は、セクション12.20.3「MySQL での GROUP BY の処理」を参照してください。

ほとんどの集計関数は、ウィンドウ関数として使用できます。 この方法で使用できるものは、オプションの OVER 句を表す[over_clause]の構文の説明で示されます。over_clauseセクション12.21.2「Window 関数の概念と構文」 で説明されており、ウィンドウ関数の使用方法に関するその他の情報も含まれています。

数値の引数の場合、分散および標準偏差関数が DOUBLE 値を返します。 SUM() および AVG() 関数は、正確な値の引数 (整数または DECIMAL) の場合は DECIMAL 値を返し、近似値の引数 (FLOAT または DOUBLE) の場合は DOUBLE 値を返します。

SUM() および AVG() 集計関数は時間値を扱いません。 (これらは値を数字に変換するので、最初の数字以外の文字のあとのすべての情報が失われます。) この問題を回避するには、数値単位に変換し、集計操作を実行してから、時間値に戻します。 例:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROM tbl_name;
SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;

数値引数を取る SUM()AVG() などの関数は、必要に応じて引数を数値にキャストします。 SETENUM 値の場合、キャスト演算でベースとなる数値が使用されます。

BIT_AND()BIT_OR() および BIT_XOR() の集計関数は、ビット操作を実行します。 MySQL 8.0 より前では、ビット関数および演算子には BIGINT (64-bit 整数) 引数が必要であり、BIGINT 値が返されるため、最大範囲は 64 ビットでした。 操作の実行前に BIGINT 以外の引数が BIGINT に変換され、切捨てが発生する可能性があります。

MySQL 8.0 では、ビット関数および演算子はバイナリ文字列型の引数 (BINARYVARBINARY および BLOB 型) を許可し、同様の型の値を返します。これにより、引数を受け取り、64 ビットを超える戻り値を生成できます。 ビット操作の引数評価および結果タイプの詳細は、セクション12.13「ビット関数と演算子」 の概要を参照してください。