データベース管理において、集計関数または集計関数とは、複数の値をまとめて処理して単一の要約統計量を生成する関数のことです。

一般的な集計関数には以下が含まれます。
その他には以下のようなものがあります。
形式的には、集約関数は、入力ドメインIからの集合、多重集合(バッグ)、またはリストを入力として受け取り、出力ドメインOの要素を出力します。[ 1 ]入力ドメインと出力ドメインは、の場合のように同じである場合もあれば、の場合のように異なる場合もあります。SUMCOUNT
集計関数は、多くのプログラミング言語、スプレッドシート、および関係代数において一般的に用いられます。
SQL:2016標準[ 2 ]listaggで定義されているこの関数は、 複数の行のデータを単一の連結文字列に集約します。
エンティティ関係図では、集約は図 1 に示すように、関係とそのエンティティを囲む四角形で表され、それが集約エンティティとして扱われていることを示します。[ 3 ]
集計関数は、すべての入力値を一度に必要とする可能性があるため、ボトルネックとなる。分散コンピューティングでは、このような計算をより小さな部分に分割し、分割統治アルゴリズムを用いて並列処理で分散することが望ましい。
集計関数の中には、部分集合の集計を計算し、それらの集計を合計することで計算できるものがあります。例としては、COUNT、MAX、MIN、SUMなどがあります。また、部分集合の補助数を計算し、それらの補助数を合計し、最後に全体の数を計算することで集計できるものもあります。例としては、AVERAGE(合計とカウントを追跡し、最後に除算する)やRANGE(最大値と最小値を追跡し、最後に減算する)などがあります。さらに、場合によっては、集合全体を一度に分析しなければ集計を計算できないものもありますが、近似値を分散して計算できる場合もあります。例としては、DISTINCT COUNT(重複なしカウント問題)、MEDIAN、MODEなどがあります。
このような関数は、分解可能な集約関数[ 4 ]または分解可能な集計関数と呼ばれます。最も単純なものは自己分解可能な集約関数と呼ばれ、マージ演算子が存在するような関数fとして定義されます。そのため
どこでは多重集合の和集合です(モノイド準同型を参照)。
例えば、SUM:
カウント:
最大:
MIN :
自己分解可能な集計関数は、個別に適用することで組み合わせる(正式には積をとる)ことができることに注意してください。たとえば、 2つの数値を追跡することで、合計と件数を同時に計算できます。
より一般的には、分解可能な集約関数f は、最終関数gと自己分解可能な集約関数hの合成として表現できるものとして定義できる。例えば、平均 =合計 / カウント、範囲 =最大値 - 最小値です。
MapReduceフレームワークでは、これらのステップはInitialReduce(個々のレコード/シングルトンセットの値)、Combine(2つの集約のバイナリマージ)、FinalReduce(補助値に対する最終関数)として知られています[ 5 ] 。また、分解可能な集約をShuffleフェーズの前に移動することはInitialReduceステップとして知られています[ 6 ]。
分解可能な集計関数は、オンライン分析処理(OLAP)において重要です。なぜなら、集計クエリを基本データではなく、OLAP キューブ内の事前計算された結果に対して計算できるからです。 [ 7 ]例えば、COUNT 、 MAX 、 MIN 、 SUMはOLAP キューブの各セルに対して計算して集計 (「ロールアップ」) できるため、OLAP で簡単にサポートできますが、MEDIAN はビューごとに個別に計算する必要があるため、サポートするのは困難です。
集計データから平均値と標準偏差を計算するには、各グループについて、値の合計 (Σx i = SUM(x))、値の数 (N=COUNT(x))、および各グループの値の二乗の合計 (Σx i 2 =SUM(x 2 )) が利用可能である必要があります。[ 8 ]AVG : または または、COUNT(X)=COUNT(Y)の場合のみ SUM(x2)値の二乗和は、グループの標準偏差を計算するために重要です。 STDDEV: すべての点で等しい確率を持つ有限母集団の場合、[ 9 ]
これは、標準偏差が、値の二乗の平均と平均値の二乗との差の平方根に等しいことを意味します。
年12月、ISOはSQL標準の新しいバージョンをリリースしました。行パターンマッチング、listagg、日付と時刻のフォーマット、JSONサポートなどの新機能が導入されています。
{{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)