Com es corregeix l'error 'La columna no és vàlida a la llista de selecció perquè no es troba en cap funció agregada ni en la clàusula GROUP BY'



Proveu El Nostre Instrument Per Eliminar Problemes

L'error ' La columna no és vàlida a la llista de selecció perquè no es troba en cap funció agregada ni en la clàusula GROUP BY 'Esmentat a continuació sorgeix quan executeu' AGRUPAR PER ', I heu inclòs almenys una columna a la llista de selecció que no forma part del grup per clàusula ni està inclosa en una funció agregada com max (), min (), sum (), count () i avg () . Per tant, perquè la consulta funcioni, hem d’afegir totes les columnes no agregades a qualsevol grup per clàusula, si és possible i no té cap impacte en els resultats, ni incloure aquestes columnes en una funció agregada adequada, i això funcionarà com un encant. L'error es produeix a MS SQL, però no a MySQL.



Error 'La columna no és vàlida a la llista de selecció perquè no figura ni en una funció agregada ni en la clàusula GROUP BY'



Dues paraules clau ' Agrupar per 'I' funció agregada ”S’han utilitzat en aquest error. Per tant, hem d’entendre quan i com utilitzar-los.



Grup per clàusula:

Quan un analista necessita resumir o agregar dades com ara beneficis, pèrdues, vendes, cost i salari, etc. mitjançant SQL, ' AGRUPAR PER ”És molt útil en aquest sentit. Per exemple, per resumir, les vendes diàries es mostren a l'alta direcció. De la mateixa manera, si voleu comptar el nombre d'estudiants en un departament d'un grup universitari juntament amb la funció agregada, us ajudarà a aconseguir-ho.

Agrupació per estratègia Dividir-Aplicar-Combinar:

Agrupa per estratègia “divideix-aplica-combina”

  • La fase dividida divideix els grups amb els seus valors.
  • La fase d’aplicació aplica la funció agregada i genera un valor únic.
  • La fase combinada combina tots els valors del grup com a valor únic.

Mostra d'estratègia 'SPLIT_APPLY_COMBINE'



A la figura anterior podem veure que la columna s’ha dividit en tres grups segons la primera columna C1 i, a continuació, s’aplica la funció agregada als valors agrupats. Per fi, la fase de combinació assigna un valor únic a cada grup.

Això es pot explicar mitjançant l'exemple següent. En primer lloc, creeu una base de dades anomenada 'appuals'.

Creació de bases de dades

Exemple:

Crea una taula ' empleat ”Mitjançant el codi següent.

USAR [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]. [Empleat] ([e_id] [int] NOT NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NUL, [salari] [int] NUL, 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_P = PRIMARY]) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Creació de taules d’empleats

Ara, inseriu dades a la taula mitjançant el codi següent.

Inseriu als valors dels empleats (e_id, e_ename, dep_id, salari) (101, 'Sadia