SQL グループ化関数について: 「単一グループのグループ関数ではない」エラーの解決
SQL では、SUM( などのグループ関数) ) 複数の行にわたる値を集計し、特定の列ごとにグループ化します。ただし、グループ関数を SELECT ステートメント内の個々の列式と組み合わせようとすると、「単一グループのグループ関数ではありません」というエラーが発生します。このエラーは、グループ関数が個々の列式と同じグループ内のデータのサブセットに対して動作する場合に発生します。
この問題を解決するには、次のオプションを検討してください:
1 。グループ関数を削除します:
SUM() 関数を削除すると、集計値が無効になり、個々の列の式のみが残ります。
2.個々の列式を削除します:
SELECT ステートメントから SSN 列を削除すると、最大合計値が返されてエラーが解決されます。
3.包括的な GROUP BY 句の追加:
GROUP BY 句にすべての個別の列式を含めると、各行がグループ関数のスコープと一致する個別のグループに属することが保証されます。ただし、このオプションは、複数の列でグループ化し、各組み合わせに一意の値を持たせる場合には適さない可能性があります。
取得用の代替クエリ:
指定された場合最大ダウンロード数の顧客の SSN を見つける目的では、代替クエリが推奨されます:
SELECT TOP 1 SSN, SUM(TIME) AS TotalTime FROM downloads GROUP BY SSN ORDER BY TotalTime DESC;
このクエリは次の内容を取得しますSSN と各 SSN の合計ダウンロード時間。合計時間に基づいて降順で並べ替えられます。 TOP 1 句は、合計時間が最も長い SSN に結果を制限します。
また、複数の顧客が同じ最大合計時間を共有する場合は、次のクエリを使用できます:
SELECT SSN, SUM(TIME) AS TotalTime FROM downloads GROUP BY SSN HAVING SUM(TIME) = (SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN);
この改訂されたクエリでは、最大合計ダウンロード時間に関連付けられたすべての SSN が取得され、情報が失われないことが保証されます。
以上がSQL の「単一グループのグループ関数ではありません」エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。