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