SQL クエリ エラー: 列は集計関数または GROUP BY 句に準拠していないため、SELECT リストでは無効です
SQL クエリを実行すると、次のエラーが発生する場合があります:
<code>Column 'Column_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.</code>
このエラーの理由は次のとおりです:
データのグループ化
GROUP BY 句では、同じ列値を持つ行をグループ化するように指定します。たとえば、次のクエリでは:
<code>SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
従業員は LocationID によってグループ化されます。ただし、GROUP BY 句にない列 (emp.EmpID など) を SELECT リストに含めようとすると、どの EmpID を含めるべきかを判断できないため、このエラーが発生します。グループ値ごとに選択されます。
集計関数
SUM、COUNT、MAX、MIN などの 集計関数を使用して、グループ化されたデータの概要情報を取得できます。 SELECT リストに非集計列を含めるが、それが GROUP BY 句の一部ではない場合は、その列に対して集計関数を使用する必要があります。
たとえば、場所ごとの従業員数を計算したい場合は、次を使用します:
<code>SELECT loc.LocationID, COUNT(emp.EmpID) FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
これにより、各拠点について、個々の従業員 ID のリストではなく、従業員の数のみが返されるようになります。
解決策
このエラーを解決するには、次のことを行う必要があります:
以上がSQL クエリで GROUP BY に関連する「選択リストの列が無効です」エラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。