この項では、式や例で GROUP BY 句のサブ句 ROLLUP を使用します。
次のような形式の単一テーブルのクエリを考えてみます。
SELECT select-list FROM table WHERE where-search-condition GROUP BY [ group-by-expression | ROLLUP (group-by-expression) ] HAVING having-search-condition
このクエリは、次のように実行します。
WHERE 句を適用する テーブルのローの一部だけで構成される中間結果が生成されます。
結果をグループに分割する GROUP BY 句の指示どおりに、各グループに対してローが 1 つある中間結果が生成されます。生成された各ローには、グループごとの group-by-expression と、select-list および having-search-condition の集合関数の計算結果が含まれます。
HAVING 句を適用する 第 2 の中間結果で HAVING 句の基準に満たないローは、この時点で削除されます。
プロジェクトの結果を表示する クエリの結果セットに表示する必要のあるカラムだけが手順 3 から取り出されます。つまり、select-list にある式に対応するカラムだけが取り出されます。
このプロセスでは、GROUP BY 句のあるクエリについて、いくつかの要件が作成されます。
WHERE 句が最初に評価される。したがって、どの集合関数も、WHERE 句を満たすローについてのみ評価されます。
最終結果セットは、分割されたローを保持している第 2 の中間結果から構築される。第 2 の中間結果は、group-by-expression に一致するローを保持しています。したがって、集合関数ではない式が select-list にある場合、同様に group-by-expression にもその式がなければなりません。プロジェクションの段階では関数の評価は行われません。
group-by-expression にある式を、select-list に含まないことも可能です。その式は、結果にプロジェクションされます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |