グループ関数を使用した集計データのレポート複数選択20 / 50 問

Oracle Database 19cで、エラーにならないSQL文はどれですか。2つ選択してください。

ASELECT department_id AS dept, COUNT(*) FROM employees GROUP BY dept;
BSELECT department_id, COUNT(*) FROM employees GROUP BY 1;
CSELECT department_id AS dept, COUNT(*) FROM employees GROUP BY department_id ORDER BY dept;✓
DSELECT department_id, COUNT(*) FROM employees GROUP BY department_id ORDER BY 2;✓
正解:C・D解説

SELECT文の各句は、おおむね次の順序で処理されます。
SELECT文の処理順序

順序句
1FROM
2WHERE
3GROUP BY
4HAVING
5SELECT
6ORDER BY

列別名はSELECT句で定義されるため、SELECT句より後に処理されるORDER BY句でだけ使用できます。
各選択肢の検討

  • A(誤):GROUP BY句の時点では列別名deptがまだ定義されていないためエラーになります。
  • B(誤):Oracle Database 19cでは、GROUP BY句の1は列番号ではなく定数として扱われます。department_idでグループ化されないためエラーになります。
  • C(正):ORDER BY句では列別名を使用できます。
  • D(正):ORDER BY句では、SELECT句の何番目の列か(列番号)で並び順を指定できます。

前後の問題