Съдържание
Груповите функции са вградени в SQL функции, които работят с групи от редове и връщат стойност за цялата група. Тези функции са: GROUP, HAVING, COUNT, MAX, MIN, AVG, SUM, DISTINCT.Клаузата ГРУПИРАЙ ПО използвани заедно с групови функции за извличане на данни, групирани според една или повече колони.
Междинните суми могат да бъдат получени с клаузата GROUP BY. Заявка с клауза GROUP BY се нарича групирана заявка, защото групира данните в изходната таблица и създава единичен обобщен ред за всяка формирана група. Колоните, посочени в GROUP BY, се наричат групиране на колони.
Да предположим таблица за продажби със следните полета
Id | продукт | цена | количество | ID продавач
Пример:
ИЗБЕРЕТЕ СУММАТА (цена) като общи продажби ОТ продажбите
Получава сумата от общите продажби, които са направени, стойността се присвоява на общите продажби
ИЗБЕРЕТЕ СУММА (продажби) ОТ ГРУПА НА ПРОДАЖБИ ИД служителЗа всеки служител се формира група и сумата се изчислява по редовете на всяка група. Предишният пример получава списък със сумата от продажбите на всеки един от служителите.
Заявката би била по -добре да се включи в списъка за избор името на служителя, за да се знае на кой служител съответства сумата от продажбите:
SELECT Employees.name, SUM (цена) КАТО продажби от служител ОТ продажби, служители Където sales.idemployee = zaposlenih.idemployee GROUP BY ideemployee
Само:
постоянни стойности
колонни функции
групиране на колони (колони, които се появяват в клаузата GROUP BY)
или всеки израз, базиран на горното.
Пример: Искаме, ако имаме клонове и бихме искали да получим сумата от продажбите на служителите, групирани по региони и градове:
ИЗБЕРЕТЕ СУММАТА (цена) като продажби по клон ОТ ГРУПА по продажби ПО регион, град
Той е групиран първо по региони и във всеки регион по град.
Всички редове, които имат нулева стойност в полето за групиране, стават една група. Тоест, тя третира нулевата стойност като всяка стойност за групиране.
Клаузата HAVING
Клаузата HAVING ни позволява да избираме редове от таблицата в резултат на заявка за групиране
В условията за избор може да се появи само следното:
постоянни стойности
колонни функции
групиране на колони (колони, които се появяват в клаузата GROUP BY)
или всеки израз, базиран на горното.
Пример: Искаме да знаем кои служители са продали повече от 10 000 евро
ИЗБЕРЕТЕ * ОТ ГРУПА НА ПРОДАЖБИ ОТ ИДЕМИТЕ СЪС СРЕДА (цена)> 10000
За да получим исканото, трябва да изчислим средните продажби на служителите. Трябва да групираме служителите по идентификатор и да изчислим средната стойност за всяка от продажбите на служител, накрая трябва да изберем от резултата редовете, които имат средно по -висока стойност над 10 000.
Как вътрешно се изпълнява групова заявка?
Първо таблицата на източника на данни се формира съгласно клаузата FROM,
редовете се избират от източника на данни съгласно клаузата WHERE,
групите редове се формират съгласно клаузата GROUP BY,
За всяка група се получава ред в получената таблица със стойностите, които се появяват в клаузите GROUP BY, HAVING и в списъка за избор,
редовете се избират от получената таблица съгласно клаузата HAVING,
колоните, които не се появяват в списъка за избор, се премахват от получената таблица,
редовете на получената таблица са подредени съгласно клаузата ***** BY
Заявката се превръща в групова заявка веднага щом се появи GROUP BY, HAVING или функция на колона.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка