Kako ispraviti pogrešku 'Stupac je nevažeći na popisu za odabir jer nije sadržan ni u skupnoj funkciji ni u klauzuli GROUP BY'



Isprobajte Naš Instrument Za Uklanjanje Problema

Greška ' Stupac je nevažeći na popisu za odabir jer nije sadržan ni u agregatnoj funkciji ni u klauzuli GROUP BY 'Spomenuto u nastavku nastaje kad izvršite' GRUPIRAJ PO ', A na popis za odabir uključili ste barem jedan stupac koji nije niti dio grupe po klauzuli niti je sadržan u skupnoj funkciji poput max (), min (), zbroj (), count () i prosj () . Dakle, da bi upit funkcionirao, moramo dodati sve neagregirane stupce bilo kojoj grupi po klauzuli ako je to izvedivo i nema nikakav utjecaj na rezultate ili uključiti ove stupce u prikladnu agregatnu funkciju, a to će raditi kao šarm. Pogreška nastaje u MS SQL-u, ali ne i u MySQL-u.



Pogreška 'Stupac je nevažeći na popisu za odabir jer nije sadržan ni u skupnoj funkciji ni u klauzuli GROUP BY'



Dvije ključne riječi “ Grupiraj prema 'I' agregatna funkcija ”Korišteni su u ovoj pogrešci. Stoga moramo razumjeti kada i kako ih koristiti.



Grupiraj po klauzuli:

Kada analitičar treba sažeti ili prikupiti podatke poput dobiti, gubitka, prodaje, troškova i plaće itd. Pomoću SQL-a, “ GRUPIRAJ PO ”Je vrlo korisno u ovom pogledu. Na primjer, da rezimiramo, dnevnu prodaju pokazujte višem menadžmentu. Slično tome, ako želite izbrojiti broj studenata na odjelu u sveučilišnoj grupi, zajedno s agregatnom funkcijom, to će vam pomoći da to postignete.

Grupiraj po strategiji Split-Apply-Combine:

Grupiraj prema strategiji 'podijeli-primijeni-kombiniraj'

  • Podijeljena faza dijeli skupine s njihovim vrijednostima.
  • Faza primjene primjenjuje agregatnu funkciju i generira jednu vrijednost.
  • Kombinirana faza kombinira sve vrijednosti u grupi kao jednu vrijednost.

Uzorak strategije “SPLIT_APPLY_COMBINE”



Na gornjoj slici možemo vidjeti da je stupac podijeljen u tri skupine na temelju prvog stupca C1, a zatim se agregirana funkcija primjenjuje na grupirane vrijednosti. Napokon kombinirana faza svakoj skupini dodijeljuje po jednu vrijednost.

To se može objasniti primjerom u nastavku. Prvo stvorite bazu podataka pod nazivom 'appuals'.

Izrada baze podataka

Primjer:

Stvori tablicu “ zaposlenik ”Pomoću sljedećeg koda.

KORISTITE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]. [Zaposlenik] ([e_id] [int] NOT NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NULL, [plata] [int] NULL, OGRANIČENJE [PK_employee] PRIMARNI KLJUČ KLASERIRAN ([e_id] ASC) SA (PAD_INDEX = ISKLJUČENO, STATISTICS_NORECOMPUTE = ISKLJUČENO, IGNORE_DUP_KEY = ISKLJUČENO, ALLOW ON ONROW_LOCKS = PRIMARY]) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Stvaranje stola zaposlenika

Sada, umetnite podatke u tablicu pomoću sljedećeg koda.

Umetnite u vrijednosti zaposlenika (e_id, e_ename, dep_id, pay) (101, 'Sadia