Jak naprawić błąd „Kolumna jest nieprawidłowa na liście wyboru, ponieważ nie jest zawarta ani w funkcji agregującej, ani w klauzuli GROUP BY”



Wypróbuj Nasz Instrument Do Eliminowania Problemów

Błąd ' Kolumna jest nieprawidłowa na liście wyboru, ponieważ nie jest zawarta ani w funkcji agregującej, ani w klauzuli GROUP BY ”Wspomniany poniżej pojawia się, gdy wykonujesz„ GRUPUJ WEDŁUG ”I umieściłeś przynajmniej jedną kolumnę na liście wyboru, która nie jest ani częścią klauzuli group by, ani nie jest zawarta w funkcji agregującej, takiej jak max (), min (), sum (), count () i avg () . Tak więc, aby zapytanie działało, musimy dodać wszystkie niezagregowane kolumny do dowolnej klauzuli group by, jeśli jest to wykonalne i nie ma żadnego wpływu na wyniki, lub uwzględnić te kolumny w odpowiedniej funkcji agregującej, a to będzie działać jak urok. Błąd pojawia się w MS SQL, ale nie w MySQL.



Błąd „Kolumna jest nieprawidłowa na liście wyboru, ponieważ nie jest zawarta ani w funkcji agregującej, ani w klauzuli GROUP BY”



Dwa słowa kluczowe „ Grupuj według ' i ' funkcja agregująca ”Zostały użyte w tym błędzie. Dlatego musimy wiedzieć, kiedy i jak ich używać.



Klauzula Grupuj według:

Gdy analityk musi podsumować lub zagregować dane, takie jak zysk, strata, sprzedaż, koszty i wynagrodzenie itp. Za pomocą języka SQL, „ GRUPUJ WEDŁUG ”Jest w tym bardzo pomocny. Na przykład, podsumowując, codzienna sprzedaż, którą należy pokazać kierownictwu wyższego szczebla. Podobnie, jeśli chcesz policzyć liczbę studentów na wydziale w grupie uniwersyteckiej wraz z funkcją zbiorczą, pomoże ci to osiągnąć.

Grupuj według strategii Podziel-Zastosuj-Połącz:

Grupuj według używa strategii „podziel-zastosuj-połącz”

  • Faza rozdzielona dzieli grupy według ich wartości.
  • Faza stosowania stosuje funkcję agregującą i generuje pojedynczą wartość.
  • Faza połączona łączy wszystkie wartości w grupie jako jedną wartość.

Przykład strategii „SPLIT_APPLY_COMBINE”



Na powyższym rysunku widzimy, że kolumna została podzielona na trzy grupy w oparciu o pierwszą kolumnę C1, a następnie funkcja agregująca jest stosowana do zgrupowanych wartości. W ostatniej fazie łączenia każda grupa ma przypisaną jedną wartość.

Można to wyjaśnić na poniższym przykładzie. Najpierw utwórz bazę danych o nazwie „appuals”.

Tworzenie bazy danych

Przykład:

Utwórz tabelę „ pracownik ”Przy użyciu następującego kodu.

UŻYJ [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]. [Pracownik] ([e_id] [int] NOT NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NULL, [pensja] [int] NULL, CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED ([e_id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKSP = ON, ALLOW_ROW_LOCKSP = ON) PRIMARY]) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Tworzenie tabeli pracowników

Teraz wstaw dane do tabeli, używając następującego kodu.

Wstaw do wartości pracownika (e_id, e_ename, dep_id, salary) (101, „Sadia