Kaip ištaisyti klaidą „Stulpelis neteisingas pasirinkimo sąraše, nes jo nėra nei sudėtinėje funkcijoje, nei„ GROUP BY “sąlygoje“



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Klaida „ Stulpelis neteisingas pasirinkimo sąraše, nes jo nėra nei agreguotojoje funkcijoje, nei sąlygoje „GROUP BY“ “, Paminėtas žemiau, kyla, kai įvykdote„ GRUPUOTI PAGAL “Užklausą ir į pasirinkimo sąrašą įtraukėte bent vieną stulpelį, kuris nėra nei grupės pagal sakinį dalis, nei jis yra sudėtinėje funkcijoje, pvz., maks. (), min. (), suma (), skaičius () ir vid. () . Taigi, kad užklausa veiktų, turime pridėti visus nesumuotus stulpelius prie bet kurios grupės pagal sakinį, jei tai įmanoma ir neturi jokio poveikio rezultatams, arba įtraukti šiuos stulpelius į tinkamą suvestinės funkciją, ir tai veiks kaip žavesys. Klaida atsiranda MS SQL, bet ne MySQL.



Klaida „Stulpelis neteisingas pasirinktame sąraše, nes jo nėra nei agreguotojoje funkcijoje, nei sąlygoje„ GROUP BY “



Du raktiniai žodžiai “ Grupuoti pagal “Ir„ agregato funkcija “Buvo naudojami šioje klaidoje. Taigi turime suprasti, kada ir kaip juos naudoti.



Grupuoti pagal sąlygą:

Kai analitikui reikia apibendrinti arba sujungti duomenis, tokius kaip pelnas, nuostoliai, pardavimai, išlaidos, atlyginimas ir kt., Naudojant SQL, GRUPUOTI PAGAL “Yra labai naudinga šiuo klausimu. Pavyzdžiui, apibendrinant, parduodama parai vyresniajai vadovybei. Panašiai, jei norite suskaičiuoti universiteto grupės katedros studentų skaičių kartu su kaupimo funkcija, tai padės jums tai pasiekti.

Grupuoti pagal „Split-Apply-Combine“ strategiją:

Grupuokite pagal „padalijimo, pritaikymo ir derinimo“ strategiją

  • Padalijusi fazė padalija grupes pagal jų vertes.
  • Taikymo fazėje taikoma suvestinė funkcija ir sukuriama viena reikšmė.
  • Sujungtoje fazėje visos grupės vertės sujungiamos kaip viena reikšmė.

Strategijos „SPLIT_APPLY_COMBINE“ pavyzdys



Aukščiau pateiktame paveikslėlyje matome, kad stulpelis buvo padalytas į tris grupes, remiantis pirmuoju C1 stulpeliu, o tada sugrupuotoms reikšmėms taikoma agregavimo funkcija. Pagaliau kombinacinis etapas kiekvienai grupei priskiria po vieną vertę.

Tai galima paaiškinti naudojant toliau pateiktą pavyzdį. Pirmiausia sukurkite duomenų bazę pavadinimu „appuals“.

Duomenų bazių kūrimas

Pavyzdys:

Sukurti lentelę “ darbuotojas “Naudojant šį kodą.

NAUDOTI [appuals] PASIRENKITE ANSI_NULLS ĮEINKITE QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE LENTELĖ [dbo]. [Darbuotojas] ([e_id] [int] NOT NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NULL, [alga] [int] NULL, SUSITARIMAS [PK_darbuotojo] PAGRINDINIS RAKTAS ([e_id] ASC) SU (PAD_INDEX = IŠJUNGTA, STATISTICS_NORECOMPUTE = IŠJUNGTA, IGNORE_DUP_KEY = IŠJUNGTA, ALLOW_ROW_LOCKS = ON] PRIMARY]) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Darbuotojų lentelės kūrimas

Dabar įterpkite duomenis į lentelę naudodami šį kodą.

Įtraukti į darbuotojo (el. ID, el. Vardas, dep_ ID, atlyginimas) reikšmes (101, 'Sadia