Como corrigir o erro 'A coluna é inválida na lista de seleção porque não está contida em uma função agregada ou na cláusula GROUP BY'



Experimente Nosso Instrumento Para Eliminar Problemas

O erro ' A coluna é inválida na lista de seleção porque não está contida em uma função agregada ou na cláusula GROUP BY ”Mencionado abaixo surge quando você executa“ GRUPO POR ”Consulta, e você incluiu pelo menos uma coluna na lista de seleção que não faz parte da cláusula group by nem está contida em uma função agregada como max (), min (), soma (), contagem () e média () . Portanto, para fazer a consulta funcionar, precisamos adicionar todas as colunas não agregadas a qualquer cláusula group by, se possível e não tiver nenhum impacto nos resultados, ou incluir essas colunas em uma função de agregação adequada, e isso funcionará perfeitamente. O erro surge no MS SQL, mas não no MySQL.



Erro “A coluna é inválida na lista de seleção porque não está contida em uma função agregada ou na cláusula GROUP BY”



Duas palavras-chave “ Grupo por ”E“ função agregada ”Foram usados ​​neste erro. Portanto, devemos entender quando e como usá-los.



Grupo por cláusula:

Quando um analista precisa resumir ou agregar os dados, como lucro, perda, vendas, custo e salário, etc. usando SQL, “ GRUPO POR ”É muito útil a este respeito. Por exemplo, para resumir, vendas diárias para mostrar à alta administração. Da mesma forma, se você quiser contar o número de alunos em um departamento de um grupo universitário, juntamente com a função agregada, isso o ajudará a conseguir isso.

Grupo por estratégia Dividir-Aplicar-Combinar:

Agrupar por usa estratégia 'dividir-aplicar-combinar'

  • A fase de divisão divide os grupos com seus valores.
  • A fase de aplicação aplica a função agregada e gera um único valor.
  • A fase combinada combina todos os valores do grupo como um único valor.

Amostra de estratégia “SPLIT_APPLY_COMBINE”



Na figura acima, podemos ver que a coluna foi dividida em três grupos com base na primeira coluna C1 e, em seguida, a função de agregação é aplicada aos valores agrupados. Por fim, a fase de combinação atribui um único valor a cada grupo.

Isso pode ser explicado usando o exemplo abaixo. Primeiro, crie um banco de dados denominado “appuals”.

Criação de banco de dados

Exemplo:

Crie uma mesa “ empregado ”Usando o seguinte código.

USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CRIE TABELA [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_LOCKS = ON, ALLOW_LOCKS = ON, PRIMARY]) ON [PRIMARY] IR DEFINIR ANSI_PADDING OFF GO

Criação de mesa de funcionários

Agora, insira dados na tabela usando o código a seguir.

Inserir nos valores dos funcionários (e_id, e_ename, dep_id, salary) (101, 'Sadia