Как да поправим грешката „Колоната е невалидна в списъка за избор, тъй като не се съдържа нито в обобщена функция, нито в клауза GROUP BY“



Опитайте Нашия Инструмент За Премахване На Проблемите

Грешката ' Колона е невалидна в списъка за избор, тъй като не се съдържа нито в обобщена функция, нито в клаузата GROUP BY “, Споменато по-долу, възниква, когато изпълнявате„ ГРУПИРАЙ ПО ”И сте включили поне една колона в списъка за избор, която не е нито част от групата по клауза, нито се съдържа в обобщена функция като max (), min (), sum (), count () и средно () . Така че, за да работи заявката, трябва да добавим всички неагрегирани колони към която и да е група по клауза, ако е осъществимо и не оказва влияние върху резултатите, или да включим тези колони в подходяща агрегирана функция и това ще работи като очарование. Грешката възниква в MS SQL, но не и в MySQL.



Грешка „Колоната е невалидна в списъка за избор, защото не се съдържа нито в обобщена функция, нито в клауза GROUP BY“



Две ключови думи “ Групирай по ' и ' агрегирана функция ”Са използвани в тази грешка. Затова трябва да разберем кога и как да ги използваме.



Групиране по клауза:

Когато анализатор трябва да обобщи или обобщи данните като печалба, загуба, продажби, разходи и заплата и т.н., използвайки SQL, „ ГРУПИРАЙ ПО ”Е много полезно в това отношение. Например, за да обобщим, ежедневните продажби да се покажат на висшето ръководство. По същия начин, ако искате да преброите броя на студентите в отдел в университетска група, заедно с обобщената функция, ще ви помогне да постигнете това.

Групиране по стратегия за разделяне-прилагане-комбиниране:

Групирайте по стратегия „разделяне-прилагане-комбиниране“

  • Разделената фаза разделя групите с техните стойности.
  • Фазата на прилагане прилага общата функция и генерира единична стойност.
  • Комбинираната фаза комбинира всички стойности в групата като единична стойност.

Пример за стратегия „SPLIT_APPLY_COMBINE“



На фигурата по-горе можем да видим, че колоната е разделена на три групи въз основа на първата колона C1 и след това обобщената функция се прилага върху групирани стойности. Най-накрая комбинираната фаза присвоява единична стойност на всяка група.

Това може да се обясни с примера по-долу. Първо, създайте база данни с име „appuals“.

Създаване на база данни

Пример:

Създайте таблица “ служител ”С помощта на следния код.

ИЗПОЛЗВАЙТЕ [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]. [Служител] ([e_id] [int] NOT NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NULL, [заплата] [int] NULL, ОГРАНИЧЕНИЕ [PK_employee] ПЪРВИЧЕН КЛЮЧ КЛАСТУРИРАН ([e_id] ASC) С (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ALLOW ONROW_LOCKS = ALLOW ONROW_LOCKS = PRIMARY]) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Създаване на таблица на служителите

Сега вмъкнете данни в таблицата, като използвате следния код.

Вмъкване в стойности на служител (e_id, e_ename, dep_id, заплата) (101, 'Sadia