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