Когато има голямо количество данни, често виждаме възможност да манипулираме данните според нашите изисквания. Клаузата GROUP BY е един такъв израз в SQL, използван за групиране на данните въз основа на няколко колони или на условия. В тази статия за SQL GROUP BY оператор ще обсъдя няколко начина за използване на операторите GROUP BY в следната последователност:
- Изявление GROUP BY
- Синтаксис
- Примери:
- Използвайте GROUP BY в една колона
- GROUP BY в множество колони
- Използвайте GROUP BY с ORDER BY
- GROUP BY с клауза HAVING
- Използвайте GROUP BY с JOINS
Преди да преминем към примерите за това как да използваме клаузата GROUP BY, нека разберем какво е GROUP BY в SQL и неговия синтаксис.
Изявление на SQL GROUP BY
Този израз се използва за групиране на записи със същите стойности. Инструкцията GROUP BY често се използва с агрегатните функции за групиране на резултатите по една или повече колони. Освен това клаузата GROUP BY се използва също с клаузата HAVING и JOINS за групиране на набора от резултати въз основа на условия.
SQL GROUP BY Синтаксис
SELECT Column1, Column2,..., ColumnN FROM TableName WHERE Condition GROUP BY ColumnName(s) ORDER BY ColumnName(s);
Тук можете да добавите агрегатните функции преди имената на колоните, както и клауза HAVING в края на израза, за да споменете условие. След това, в тази статия за SQL GROUP BY, нека разберем как да приложим това изявление.
Примери:
За по-добро разбиране разделих примерите на следните раздели:
- Използвайте GROUP BY в една колона
- GROUP BY в множество колони
- Използвайте GROUP BY с ORDER BY
- GROUP BY с клауза HAVING
- Използвайте GROUP BY с JOINS
Ще разгледам следната таблица, за да ви обясня примерите:
EmpID | EmpName | EmpEmail | Номер на телефон | Заплата | Град |
1 | Нидхи | 9955669999 | 50000 | Мумбай | |
2 | Да, | 9875679861 | 55000 | Пуна | |
3 | Рахул | 9876543212 | 35000 | Делхи | |
4 | Соня | 9876543234 | 35000 | Делхи | |
5 | Акаш | 9866865686 | 25000 | Мумбай |
Нека да разгледаме всеки един от тях.
Използвайте SQL GROUP BY в една колона
Пример:
Напишете заявка, за да извлечете броя на служителите във всеки град.
SELECT COUNT(EmpID), City FROM Employees GROUP BY City;
Изход:
Ще видите следния изход:
Count(EmpID) | Град |
2 | Делхи |
2 | Мумбай |
1 | Пуна |
Използвайте SQL GROUP BY за множество колони
Пример:
Напишете заявка, за да извлечете броя на служителите с различни заплати във всеки град.
SELECT City, Salary, Count(*) FROM Employees GROUP BY City, Salary;
Изход:
Таблицата ще има следните данни:
Град | Заплата | Брой(*) |
Делхи | 35000 | 2 |
Мумбай | 25000 | 1 |
Мумбай | 50000 | 1 |
Пуна | 55000 | 1 |
Използвайте SQL GROUP BY с ORDER BY
Когато използваме SQL оператор GROUP BY с клаузата ORDER BY, стойностите се сортират във възходящ или низходящ ред.
Пример:
Напишете заявка, за да извлечете броя на служителите във всеки град, сортирани в низходящ ред.
SELECT COUNT(EmpID), City FROM Employees GROUP BY City ORDER BY COUNT(EmpID) DESC;
Изход:
Таблицата ще има следните данни:
Count(EmpID) | Град |
2 | Делхи |
2 | Мумбай |
1 | Пуна |
Използвайте SQL GROUP BY с клауза HAVING
Изразът на SQL GROUP BY се използва с клауза „HAVING“, за да се споменат условия за групи. Освен това, тъй като не можем да използваме агрегатните функции с клаузата WHERE, трябва да използваме клаузата „HAVING“, за да използваме агрегатните функции с GROUP BY.
Пример:
Напишете заявка за извличане на броя на служителите във всеки град със заплата> 15000
SELECT COUNT(EmpID), City FROM Employees GROUP BY City HAVING SALARY > 15000;
Изход:
Тъй като всички записи в таблицата на служителите имат заплата> 15000, ще видим следната таблица като изход:
Count(EmpID) | Град |
2 | Делхи |
2 | Мумбай |
1 | Пуна |
Използвайте GROUP BY с JOINS
JOINS са SQL изрази, използвани за комбиниране на редове от две или повече таблици, въз основа на свързана колона между тези таблици. Можем да използваме оператора SQL GROUP BY, за да групираме резултантния набор въз основа на колона/колони. Помислете за таблиците по-долу, за да изпълните операторите JOIN с клаузата на SQL GROUP BY.
Таблица с проекти:
ИД на проект | EmpID | ClientID | Дата на проекта |
2345 | 1 | 4 | 26-01-2019 |
9876 | 2 | 5 | 28-02-2019 |
3456 | 3 | 6 | 12-03-2019 |
Таблица с клиенти:
ClientID | Име на клиента |
4 | Санджана |
5 | Рохан |
6 | Арун |
Пример
Напишете заявка за изброяване на броя проекти, заявени от всеки клиент:
SELECT Clients.ClientName, COUNT(Projects.ProjectID) AS RequestedProjects FROM Projects LEFT JOIN Clients ON Projects.ProjectID = Clients.ProjectID GROUP BY ClientName;
Изход:
Таблицата ще има следните данни:
Име на клиента | Искани проекти |
Арун | 1 |
Рохан | 1 |
Санджана | 1 |
С това стигаме до края на статията SQL GROUP BY. Вижте това Обучение за сертифициране на MySQL DBA от Edureka, доверена компания за онлайн обучение с мрежа оот повече от 250 000 доволни учащи се разпръснат по целия свят. Този курс ви обучава на основните концепции и усъвършенствани инструменти и техники за управление на данни и администриране на базата данни MySQL. Той включва практическо обучение на концепции като MySQL Workbench, MySQL Server, Data Modeling, MySQL Connector, Database Design, MySQL команден ред, MySQL функции и т.н. В края на обучението ще можете да създавате и администрирате своя собствена база данни MySQL и управлявайте данни.
Имате въпрос към нас? Моля, споменете го в секцията за коментари на тази статия „SQL GROUP BY“ и ние ще се свържем с вас възможно най-скоро.