Chyba ' Sloupec je v seznamu výběrů neplatný, protože není obsažen ani v agregační funkci, ani v klauzuli GROUP BY „Zmíněno níže, vzniká při spuštění“ SKUPINA VYTVOŘENÁ ”Dotaz a do seznamu výběru jste zahrnuli alespoň jeden sloupec, který není součástí klauzule skupiny ani není obsažen v agregační funkci jako max (), min (), součet (), počet () a avg () . Aby dotaz fungoval, musíme přidat všechny neagregované sloupce do obou skupin podle klauzule, pokud je to proveditelné a nemá to žádný dopad na výsledky, nebo tyto sloupce zahrnout do vhodné agregační funkce, a to bude fungovat jako kouzlo. Chyba nastává v MS SQL, ale ne v MySQL.
Chyba „Sloupec je v seznamu výběru neplatný, protože není obsažen ani v agregační funkci, ani v klauzuli GROUP BY“
Dvě klíčová slova „ Skupina vytvořená ' a ' agregační funkce „Byly použity v této chybě. Musíme tedy pochopit, kdy a jak je použít.
Seskupit podle klauzule:
Když analytik potřebuje pomocí SQL shrnout nebo agregovat data, jako je zisk, ztráta, prodej, náklady a plat atd., “ SKUPINA VYTVOŘENÁ „Je v tomto ohledu velmi nápomocný. Například pro shrnutí, denní prodeje, které se ukáží vrcholovému vedení. Podobně, pokud chcete spočítat počet studentů v oddělení v univerzitní skupině spolu s agregační funkcí, pomůže vám to dosáhnout.
Seskupit podle strategie Split-Apply-Combine:
Seskupte pomocí strategie „split-apply-combine“
- Rozdělená fáze rozděluje skupiny podle jejich hodnot.
- Fáze použití použije agregační funkci a vygeneruje jednu hodnotu.
- Kombinovaná fáze kombinuje všechny hodnoty ve skupině jako jednu hodnotu.
Ukázka strategie „SPLIT_APPLY_COMBINE“
Na obrázku výše vidíme, že sloupec byl rozdělen do tří skupin na základě prvního sloupce C1, a poté je agregovaná funkce použita na seskupené hodnoty. Nakonec přiřadí každé skupině kombinační fáze jednu hodnotu.
To lze vysvětlit pomocí níže uvedeného příkladu. Nejprve vytvořte databázi s názvem „appuals“.
Vytvoření databáze
Příklad:
Vytvořit tabulku “ zaměstnanec “Pomocí následujícího 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_ROW_LOCKS = ON, ALLOW_ROW_LOCKS = ON, ALLOW_ROW_LOCK PRIMÁRNÍ]) ZAPNUTO [PRIMÁRNÍ] Jděte NASTAVENÍ ANSI_PADDING VYPNUTO GO
Vytváření tabulek zaměstnanců
Nyní vložte data do tabulky pomocí následujícího kódu.
Vložte do hodnoty zaměstnance (e_id, e_ename, dep_id, plat) (101, 'Sadia