順序集計関数

順序集計関数は、対応するSQL集計関数と同じルールを使用して、入力順序の項目を集計します。順序集計関数を使用すると、行をグループ化しなくても、現在のコンテキスト行の内部で配列またはマップの値を集計できます。

たとえば、seq_sum()では、SQLのsum()と同じように、入力順序で数値以外の項目がスキップされ、実際の戻り値のタイプ(long、double、またはnumber)が決定されます。唯一の例外はseq_count()で、これはSQLのcount()とは異なり、入力項目のいずれかがNULLの場合はNULLを返します。また、順序集計関数の表示場所に制限はありません(たとえば、WHERE句やSELECT句のいずれかまたは両方で使用できます)。例6-22に、seq_sumとseq_maxの使用例を示します。

次の関数は、順序集計関数です。

  • long seq_count(any*)
  • number seq_sum(any*)
  • number seq_avg(any*)
  • any_atomic seq_min(any*)
  • any_atomic seq_max(any*)

long seq_count(any*)

入力順序内の項目の数を返します。詳細は、long count(any*)を参照してください。

number seq_sum(any*)

入力順序の数値項目の合計を返します。詳細は、number sum(any*)を参照してください。

number seq_avg(any*)

入力順序の数値項目の平均を返します。詳細は、number avg(any*)を参照してください。

any_atomic seq_min(any*)

入力順序の項目の最小を返します。詳細は、any_atomic min(any*)を参照してください。

any_atomic seq_max(any*)

入力順序の項目の最小を返します。詳細は、any_atomic max(any*)を参照してください。

例6-6 順序集計関数

SELECT id, seq_sum(u.expenses.values()) FROM users u;