Oracle AI Database 26aiで追加された初期化パラメータGROUP_BY_POSITION_ENABLEDについて、正しい記述はどれですか。2つ選択してください。
Aデフォルト値はFALSEである✓
BALTER SESSION文でセッション単位に変更できる✓
CTRUEの場合、HAVING句でも列番号で条件を指定できる
DFALSEの場合、GROUP BY句で列別名を使用できない
正解:A・B解説
GROUP_BY_POSITION_ENABLEDは、GROUP BY句に指定した正の整数を、SELECT句の何番目の列番号として扱うかどうかを制御する初期化パラメータです。
パラメータの概要
| 項目 | 内容 |
|---|---|
| データ型 | Boolean(TRUE/FALSE) |
| デフォルト値 | FALSE |
| 変更方法 | ALTER SESSION、ALTER SYSTEM |
TRUEにした場合の例
ALTER SESSION SET group_by_position_enabled = TRUE;
SELECT department_id, COUNT(*)
FROM employees
GROUP BY 1; GROUP BY 1は、SELECT句の1番目の式(department_id)でグループ化するという意味になります。
-- 列別名はパラメータの設定に関係なく使用できる
SELECT department_id dept_id, COUNT(*)
FROM employees
GROUP dept_id; ORDER BY句の列番号(ORDER BY 1)は26ai以前から使用でき、パラメータの影響を受けない点もあわせて押さえておきましょう。