Jak opravit chybu „Sloupec je v seznamu výběru neplatný, protože není obsažen ani v agregační funkci, ani v klauzuli GROUP BY“



Vyzkoušejte Náš Nástroj Pro Odstranění Problémů

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