ホームページ > データベース > mysql チュートリアル > Oracle GROUP BY クエリが「GROUP BY 式ではありません」エラーを返すのはなぜですか?

Oracle GROUP BY クエリが「GROUP BY 式ではありません」エラーを返すのはなぜですか?

Linda Hamilton
リリース: 2025-01-05 17:59:43
オリジナル
789 人が閲覧しました

Why Does My Oracle GROUP BY Query Return a

集計関数を使用しない GROUP BY

集計関数を使用せずに GROUP BY を使用する場合、Oracle がどのように動作するかを理解し、次のような問題が発生しないようにすることが重要です。 「GROUP BY 式ではありません」 error.

GROUP BY は、指定された列の同じ値を持つ行をグループ化し、単一の結果行を生成します。ただし、グループ化値の一意の組み合わせを識別するには、集計関数に現れない列を GROUP BY 句に含める必要があります。

次の表を考えてみましょう:

EMP
+-------+------+------+
| EmpNo | EName | Sal  |
+-------+------+------+
| 7839   | King  | 5000  |
| 7698   | Blake | 2850  |
| 7782   | Clark | 2450  |
+-------+------+------+
ログイン後にコピー

例1:

SELECT EName, Sal
FROM EMP
GROUP BY EName, Sal
ログイン後にコピー

結果:

+------+------+
| EName | Sal  |
+------+------+
| King  | 5000  |
| Blake | 2850  |
| Clark | 2450  |
+------+------+
ログイン後にコピー

このクエリは行を正しくグループ化し、グループ化列 (EName と Sal) 以降のすべての行を返します。 ) match.

例2:

SELECT EName, Sal
FROM EMP
GROUP BY EName
ログイン後にコピー

結果:

ORA-00979: not a GROUP BY expression
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Sal が GROUP BY 句に含まれていないため、このクエリは失敗します。 Oracle は、同じ EName の異なる Sal 値を持つ複数の行を集計する方法を知りません。

例 3:

SELECT EName, Sal
FROM EMP
GROUP BY Sal
ログイン後にコピー

結果:

ORA-00979: not a GROUP BY expression
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

EName が GROUP に含まれていないため、このクエリも失敗しますBY句。 Oracle は、各一意の Sal 値にどの EName を関連付けるかを知る必要があります。

例 4:

SELECT EmpNo, EName, Sal
FROM EMP
GROUP BY Sal, EName
ログイン後にコピー

結果:

ORA-00979: not a GROUP BY expression
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

選択列 (EmpNo、EName、Sal) の数が次の数を超えているため、このクエリは失敗します。 GROUP BY 句の列 (Sal、EName)。 Oracle では、一意の組み合わせを考慮して、選択した列がグループ化の一部である必要があります。

例 5:

SELECT EmpNo, EName, Sal
FROM EMP
GROUP BY EmpNo, EName, Sal
ログイン後にコピー

結果:

+-------+------+------+
| EmpNo | EName | Sal  |
+-------+------+------+
| 7839   | King  | 5000  |
| 7698   | Blake | 2850  |
| 7782   | Clark | 2450  |
+-------+------+------+
ログイン後にコピー

選択されたすべての列が GROUP BY 句に含まれているため、このクエリは成功します。 Oracle は、EmpNo、EName、Sal の一意の組み合わせをそれぞれ考慮し、3 つの異なる行を作成します。

以上がOracle GROUP BY クエリが「GROUP BY 式ではありません」エラーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート