Cómo corregir el error 'La columna no es válida en la lista de selección porque no está incluida en una función agregada ni en la cláusula GROUP BY'



Pruebe Nuestro Instrumento Para Eliminar Los Problemas

El error ' La columna no es válida en la lista de selección porque no está contenida en una función agregada ni en la cláusula GROUP BY 'Mencionado a continuación surge cuando ejecuta' AGRUPAR POR 'Consulta, y ha incluido al menos una columna en la lista de selección que no forma parte de la cláusula group by ni está contenida en una función agregada como max (), min (), suma (), recuento () y avg () . Entonces, para que la consulta funcione, debemos agregar todas las columnas no agregadas a cualquier cláusula group by si es factible y no tiene ningún impacto en los resultados o incluir estas columnas en una función agregada adecuada, y esto funcionará como un encanto. El error surge en MS SQL pero no en MySQL.



Error 'La columna no es válida en la lista de selección porque no está incluida en una función agregada ni en la cláusula GROUP BY'



Dos palabras clave ' Agrupar por 'Y' función agregada ”Se han utilizado en este error. Por tanto, debemos entender cuándo y cómo utilizarlos.



Agrupar por cláusula:

Cuando un analista necesita resumir o agregar datos como ganancias, pérdidas, ventas, costos y salarios, etc. usando SQL, ' AGRUPAR POR ”Es muy útil en este sentido. Por ejemplo, en resumen, las ventas diarias para mostrar a la alta dirección. De manera similar, si desea contar el número de estudiantes en un departamento en un grupo universitario junto con la función agregada, lo ayudará a lograrlo.

Agrupar por estrategia Dividir-Aplicar-Combinar:

Agrupar por utiliza la estrategia 'dividir-aplicar-combinar'

  • La fase dividida divide los grupos con sus valores.
  • La fase de aplicación aplica la función agregada y genera un valor único.
  • La fase combinada combina todos los valores del grupo como un solo valor.

Ejemplo de estrategia 'SPLIT_APPLY_COMBINE'



En la figura anterior, podemos ver que la columna se ha dividido en tres grupos según la primera columna C1, y luego la función agregada se aplica a los valores agrupados. Por último, la fase de combinación asigna un valor único a cada grupo.

Esto se puede explicar con el ejemplo siguiente. Primero, cree una base de datos llamada 'appuals'.

Creación de base de datos

Ejemplo:

Crea una tabla ' empleado ”Utilizando el siguiente código.

USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREAR TABLA [dbo]. [Employee] ([e_id] [int] NOT NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NULL, [salario] [int] NULL, CONSTRAINT [PK_employee] CLAVE PRINCIPAL CLUSTER ([e_id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ONAGE )_ [ALLOW_ROW_LOCKS = ONAGE ]_ PRIMARIO]) ENCENDIDO [PRIMARIO] VAYA AJUSTAR ANSI_PADDING APAGADO VAYA

Creación de tablas de empleados

Ahora, inserte datos en la tabla usando el siguiente código.

Insertar en los valores de empleado (e_id, e_ename, dep_id, salario) (101, 'Sadia