Въведение в клаузата GROUP BY в SQL

За случаите, когато трябва да групираме редовете с една и съща стойност Клауза Group By влиза в картината. Клаузата GROUP BY е команда в SQL, която ще извърши тази операция.

Важното, което трябва да запомните тук, е, че клаузата GROUP BY се използва в оператора SELECT в заявката след използваната клауза WHERE.

Синтаксис

Синтаксисът за група по клауза е -

SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;

Обяснение на синтаксиса

  1. SELECT оператор - SQL командна заявка
  2. table_name - името на таблицата на базата данни, към която се отнася
  3. условия - вижте условията за проверка
  4. GROUP BY - клауза за групиране на едни и същи редове заедно
  5. ПОРЪЧАЙТЕ ОТ - винаги се използва след група По клауза за подреждане на редовете във възходящ или низходящ ред. Това е незадължително условие.

Как клауза GROUP BY работи в SQL?

За да разберем работата на групата по клауза, нека вземем помощта на пример. Помислете за таблица с име като EMPLOYEE, която съдържа основните данни за служителя като име, възраст, телефонен номер, dob, пол, адрес, имейл идентификатор и т.н.

Таблица на служителите

имевъзрасттелефонполелектронна поща
Джон23123Мъжки пол
Може22456Женски пол
Ана45644Женски пол
тенджери573456Женски пол
Res45456Женски пол
тен782456Мъжки пол
Ран345899Мъжки пол
Уан557789Женски пол
Tung325689Мъжки пол
Chung214678Мъжки пол

Помислете, че EMPLOYEE има около 10 записа.

Нека първо вземем различните стойности на „пол“ от тази таблица. Въпросът, който ще ни помогне да постигнем целта си, е -

SELECT gender FROM EMPLOYEE;

Това ще ни даде следните стойности-

пол
Мъжки пол
Женски пол
Женски пол
Женски пол
Женски пол
Мъжки пол
Мъжки пол
Женски пол
Мъжки пол
Мъжки пол

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

Така че, за да получим само уникалните стойности от таблицата, ще използваме следното запитване -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Резултатът, който получаваме след изпълнение на тази заявка, ще бъде -

пол
Мъжки пол
Женски пол

The Group By ще групира едни и същи стойности в редовете заедно и ще върне само един запис или един ред за тях, както направи с редовете „Male“ и „Female“ в таблицата. Това доведе до само две уникални стойности, които присъстваха в графата „пол“ i, e. Жена и мъж.

Сега, нека да вземем друг пример на таблица, която съдържа подробности за отдела, с който е свързан всеки един от тези служители. Ще наречем това таблица на Employee_Department.

Таблица на служителите

имекофа за въглищаотдел
Джонhod1Обслужване
Можеhod2Финанси
Анаhod1Обслужване
тенджериhod2Финанси
Reshod3Tech
тенhod5поддържа
Ранhod3Обслужване
Уанhod3Tech
Tunghod3Финанси
Chunghod5HR

Затова сега нека изпълним заявката по-долу и да потърсим резултата -

SELECT hod, department FROM Employee_Department GROUP BY hod, department;

Изпълнението на тази заявка извлича следния резултат -

кофа за въглищаотдел
hod1Обслужване
hod2Финанси
hod3Tech
hod5поддържа
hod3Обслужване
hod3Финанси
hod5HR

Клаузата GROUP BY функционира както на hod, така и на отдела, за да търси уникалните редове в гореспоменатия сценарий. Той ще провери комбинацията от hod и отдел спрямо други записи на hod и отдела, за да установи неговата уникалност. Ако ходът е същият, но отделът е различен, тогава този ред се третира като уникален. Ако hod и отделът са еднакви за повече от един ред, тогава дублиращият запис не се създава и се показва само един ред.

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

Можем да използваме клауза Group By с няколко функции за групиране и агрегиране. Нека вземем няколко примера, използвайки горните две споменати таблици, т.е. EMPLOYEE и Employee_Department.

Пример №1

Получаване на броя на мъжете и жените служители в компанията.

SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;

Изпълнението на тази заявка извлича следния резултат -

COUNT ( "име")пол
5Мъжки пол
5Женски пол

Пример №2

Получаване на броя на отделите във фирмата в низходящ ред на броя.

SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;

Изпълнението на тази заявка извлича следния резултат -

COUNT ( "име")отдел
3Обслужване
3Финанси
2Tech
1поддържа
1HR

Пример №3

Получаване на броя на различните отдели под една и съща програма в компанията в низходящ ред на броя.

SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;

Изпълнението на тази заявка извлича следния резултат -

COUNT ( "име")кофа за въглищаотдел
2hod1Обслужване
2hod2Финанси
2hod3Tech
1hod5поддържа
1hod3Обслужване
1hod3Финанси
1hod5HR

Клаузата HAVING в SQL

Използването на клавиша HAVING с клаузата Group By ще ограничи резултата от заявката до редовете със стойност, спомената с клаузата Have.

Разбирането на това с пример ще улесни -

Пример №4

SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;

Изпълнението на тази заявка извлича следния резултат -

имевъзрасттелефонполелектронна поща
Може22456Женски пол
Ана45644Женски пол
тенджери573456Женски пол
Res45456Женски пол
Уан557789Женски пол

Пример №5

SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;

Изпълнението на тази заявка извлича следния резултат -

имекофа за въглищаотдел
Можеhod2Финанси
тенджериhod2Финанси
Tunghod3Финанси

заключение

Използвайки клауза GROUP BY с оператора SELECT, можем да групираме редове със същите стойности заедно с използването на агрегирани функции, константи и изрази.

Препоръчителни статии

Това е ръководство за клаузата GROUP BY в SQL. Тук обсъждаме как работи GROUP BY Clause работи в SQL с помощта на примери и таблици на служители. Може да разгледате и следните статии, за да научите повече -

  1. SQL Insert Query
  2. SQL изгледи
  3. База данни в SQL
  4. Транзакции в SQL