Chyba „ Stĺpec je v zozname výberov neplatný, pretože nie je obsiahnutý v agregačnej funkcii ani v klauzule GROUP BY ”Uvedené nižšie vznikne, keď vykonáte“ SKUPINA PODĽA ”A do výberového zoznamu ste zahrnuli aspoň jeden stĺpec, ktorý nie je súčasťou klauzuly skupiny ani nie je obsiahnutý v agregačnej funkcii ako max (), min (), suma (), počet () a priem. () . Aby dotaz fungoval, musíme pridať všetky neagregované stĺpce do oboch skupín podľa klauzúly, ak je to možné, a nemá to žiadny vplyv na výsledky, alebo tieto stĺpce zahrnúť do vhodnej agregovanej funkcie, čo bude fungovať ako kúzlo. Chyba nastáva v MS SQL, ale nie v MySQL.
Chyba „Stĺpec je v zozname výberov neplatný, pretože nie je obsiahnutý v agregačnej funkcii ani v klauzule GROUP BY“
Dve kľúčové slová „ Zoskupiť podľa “A„ agregačná funkcia ”Boli použité pri tejto chybe. Musíme teda pochopiť, kedy a ako ich použiť.
Zoskupiť podľa klauzuly:
Keď analytik potrebuje pomocou SQL agregovať alebo agregovať údaje, ako sú zisk, strata, tržby, náklady a plat atď., “ SKUPINA PODĽA ”Je v tomto ohľade veľmi užitočný. Napríklad, aby som to zhrnul, denný predaj sa ukáže vrcholovému manažmentu. Podobne vám to pomôže dosiahnuť, ak chcete spočítať počet študentov na katedre v univerzitnej skupine spolu s agregovanou funkciou.
Zoskupiť podľa stratégie Split-Apply-Combine:
Zoskupte podľa stratégie „split-apply-combine“
- Rozdelená fáza rozdeľuje skupiny podľa ich hodnôt.
- Fáza použitia použije agregačnú funkciu a vygeneruje jednu hodnotu.
- Kombinovaná fáza kombinuje všetky hodnoty v skupine ako jednu hodnotu.
Ukážka stratégie „SPLIT_APPLY_COMBINE“
Na obrázku vyššie vidíme, že stĺpec bol rozdelený do troch skupín na základe prvého stĺpca C1 a potom sa na zoskupené hodnoty použije agregačná funkcia. Na konci kombinačná fáza priradí každej skupine jednu hodnotu.
To možno vysvetliť na príklade uvedenom nižšie. Najskôr vytvorte databázu s názvom „appuals“.
Vytvorenie databázy
Príklad:
Vytvorte tabuľku “ zamestnanec ”Pomocou nasledujúceho kódu.
USE [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]. [Employee] ([e_id] [int] NOT NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NULL, [plat] [int] NULL, 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 = ONOC = ONOC = ONOC = ONOC = ONOC = ONOC = ONOC = ONOC) PRIMÁRNE]) ZAPNUTÉ [PRIMÁRNE] VYPRACUJTE ANSI_PADDING OFF
Vytváranie tabuliek zamestnancov
Teraz vložte údaje do tabuľky pomocou nasledujúceho kódu.
Vložte do hodnoty zamestnanca (e_id, e_ename, dep_id, plat) hodnoty (101, „Sadia