2.149 GROUP_BY_POSITION_ENABLED

GROUP_BY_POSITION_ENABLEDは、GROUP BY句内の正の整数を、選択リスト内の式の順序を示す位置として処理するかどうかを制御します。

特性 説明

パラメータ・タイプ

ブール値

デフォルト値

FALSE

変更可能

ALTER SESSIONALTER SYSTEM

PDBで変更可能

はい

値の範囲

TRUE | FALSE

基本

いいえ

Oracle RAC

すべてのインスタンスで同じ値を使用する必要がある。

SQLのSELECT文では、式の共通値を共有する選択した行をグループ化し、グループごとに1行のサマリー情報返す場合に、GROUP BY句を指定できます。

以前のリリースでは、選択リスト内の式の値に従って行をグループ化する場合、選択リストに表示されたとおりに式を指定していました。次にその例を示します。

SELECT department_id, COUNT(*)
  FROM employees
  GROUP BY department_id;

Oracle Database 23ai以降では、GROUP_BY_POSITION_ENABLEDTRUEに設定されている場合はGROUP BY positionを指定できます(positionは選択リスト内の式の順序位置を表す正の整数)。たとえば、次に示すSELECT文は、選択した行をdepartment_idの値でグループ化します。

SELECT department_id, COUNT(*)
  FROM employees
  GROUP BY 1;

次のSELECT文は選択した行を、まずmanager_idの値でグループ化し、次にhired_yearの値でグループ化します。

SELECT manager_id, EXTRACT(YEAR FROM hire_date) AS hired_year, COUNT(*)
  FROM employees
  GROUP BY 1, 2;

ノート:

このパラメータは、Oracle Database 23ai以降で使用できます。

関連項目:

SELECT文のGROUP BY句の詳細は、『Oracle Database SQL言語リファレンス』を参照してください