ホームページ >データベース >mysql チュートリアル >SQL クエリが「単一グループのグループ関数ではありません」というエラーを返すのはなぜですか?

SQL クエリが「単一グループのグループ関数ではありません」というエラーを返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 05:38:13885ブラウズ

Why Does My SQL Query Return a

SQL 関数「単一グループのグループ関数ではない」の説明

SQL では、MAX などのグループ関数を使用する場合、関数単一のデータ グループに適用する必要があります。これは、特定の列の最大値を見つけたい場合は、その列ごとにデータをグループ化する必要があることを意味します。

ただし、グループ化されていない式にグループ関数を適用しようとすると、 「単一グループのグループ関数ではありません」というエラーが表示されます。たとえば、顧客によるダウンロードの列を含む downloads というテーブルがあるとします。

SELECT MAX(SUM(TIME))
FROM downloads
GROUP BY SSN

このクエリは、MAX 関数がデータのグループ (SSN によるダウンロード) に適用されるため有効です。 。ただし、次のように SSN 列を select ステートメントに追加しようとすると、

SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN

SSN 列がGROUP BY 句。これは、SQL が SSN 列がどのデータ グループに属しているかを判断できないため、それに MAX 関数を適用できないことを意味します。

このエラーを解決するには、次の 3 つのオプションがあります:

  • select ステートメントから MAX 関数を削除すると、各 SSN のダウンロードの合計が得られます。
  • select ステートメントから SSN 列を削除すると、次の結果が得られます。顧客がダウンロードした最大合計時間が表示されます。
  • 次のように SSN 列を GROUP BY 句に追加します。
SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN, TIME

これにより、ダウンロードされた最大合計時間が表示されます。一意の SSN と時刻の組み合わせごとに。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。