ホームページ > データベース > mysql チュートリアル > GROUP BY 句を含む PostgreSQL クエリでエラーがスローされるのはなぜですか?

GROUP BY 句を含む PostgreSQL クエリでエラーがスローされるのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-18 10:05:09
オリジナル
242 人が閲覧しました

Why Does My PostgreSQL Query with a GROUP BY Clause Throw an Error?

PostgreSQL GROUP BY エラーの詳細な説明

PostgreSQL で GROUP BY 句を使用してデータベース テーブルをクエリする場合、SELECT リストに含まれているが集計されていないすべての列は、GROUP BY 句に含めるか、集計関数の引数として使用する必要があります。 このエラーは、特定の列 (col2 など) でグループ化しようとしたが、SELECT ステートメントに集計されていない他の列 (col3col1 など) が含まれている場合に発生します。

集計関数

集計関数を使用すると、複数行のデータを要約できます。一般的な集計関数には次のものがあります:

  • COUNT (レコード数)
  • SUM (列の合計を計算します)
  • MIN (最小値を求める)
  • MAX (最大値を求める)
  • AVG (平均を計算)

MySQL と PostgreSQL の GROUP BY 処理の違い

MySQL は、PostgreSQL とは異なる方法で GROUP BY 句を処理します。 MySQL では、SELECT リストに GROUP BY 句に現れない未集計の列が含まれている場合でも、それは許可されます。ただし、これらの列によって返される値はレコード間で任意に異なる可能性があり、不一致が発生する可能性があります。

対照的に、PostgreSQL は SQL 標準に厳密に従っており、集計されていない列は GROUP BY 句に含めるか、集計関数の引数として使用する必要があります。

解決策

PostgreSQL でこのエラーを解決するには、非集計列で集計関数を使用するようにクエリを書き換えます。例:

<code class="language-sql">SELECT col2, MIN(col3) AS min_col3, MIN(col1) AS min_col1
FROM the_table
GROUP BY col2;</code>
ログイン後にコピー

このクエリは、MIN 集計関数を使用して、col2 で定義された各グループ内の col3col1 の最小値を取得します。

集計関数を使用することで、クエリは戻り値の一貫性が確保され、PostgreSQL の GROUP BY 句の要件に準拠していることが保証されます。

以上がGROUP BY 句を含む PostgreSQL クエリでエラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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