エラー「列は集計関数にもGROUPBY句にも含まれていないため、選択リストで無効です」を修正する方法



問題を排除するために楽器を試してください

エラー ' 集計関数またはGROUPBY句のいずれにも含まれていないため、選択リストの列が無効です 下記の「」は、「 GROUP BY 」クエリを実行し、group by句の一部でも、次のような集計関数にも含まれていない列を選択リストに少なくとも1つ含めました。 max()、min()、sum()、count() そして avg() 。したがって、クエリを機能させるには、可能であれば、すべての非集計列をいずれかのgroup by句に追加し、結果に影響を与えないか、これらの列を適切な集計関数に含める必要があります。これは魅力のように機能します。エラーはMSSQLで発生しますが、MySQLでは発生しません。



エラー「列は集計関数にもGROUPBY句にも含まれていないため、選択リストで無効です」



2つのキーワード「 グループ化 」と「 集計関数 」がこのエラーで使用されています。したがって、いつどのように使用するかを理解する必要があります。



Group by句:

アナリストがSQLを使用して、利益、損失、売上、コスト、給与などのデータを要約または集計する必要がある場合、「 GROUP BY 」はこの点で非常に役立ちます。たとえば、要約すると、上級管理職に表示する毎日の売上高。同様に、大学グループの学部の学生数を集計関数とともにカウントする場合は、これを達成するのに役立ちます。

分割-適用-結合戦略によるグループ化:

「split-apply-combine」戦略を使用してグループ化

  • 分割フェーズでは、グループをその値で分割します。
  • 適用フェーズでは、集計関数が適用され、単一の値が生成されます。
  • 結合フェーズでは、グループ内のすべての値が1つの値として結合されます。

「SPLIT_APPLY_COMBINE」戦略サンプル



上の図では、最初の列C1に基づいて列が3つのグループに分割され、グループ化された値に集計関数が適用されていることがわかります。最後に、結合フェーズで各グループに単一の値が割り当てられます。

これは、以下の例を使用して説明できます。まず、「appuals」という名前のデータベースを作成します。

データベースの作成

例:

テーブルを作成する 社員 」次のコードを使用します。

USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]。[employee]([e_id] [int] NOT NULL、[e_ename] [varchar](50)NULL、[dep_id] [int] NULL、[salary] [int] NULL、CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED([e_id] ASC)WITH(PAD_INDEX = OFF、STATISTICS_NORECOMPUTE = OFF、IGNORE_DUP_KEY = OFF、ALLOW_ROW_LOCKS = ON、ALLOW_PAGE_LOCKS = ON) PRIMARY])ON [PRIMARY] GO SET ANSI_PADDING OFF GO

従業員テーブルの作成

次に、次のコードを使用してテーブルにデータを挿入します。

employee(e_id、e_ename、dep_id、salary)に値を挿入します(101、 'Sadia