Pokud je k dispozici velké množství dat, často vidíme možnost manipulovat s daty podle našich požadavků. Klauzule GROUP BY je jedním z takových příkazů v SQL, který se používá k seskupení dat na základě několika sloupců nebo podmínek. V tomto článku o příkazu SQL GROUP BY proberu několik způsobů použití příkazů GROUP BY v následujícím pořadí:
- Příkaz GROUP BY
- Syntaxe
- Příklady:
- Použijte GROUP BY pro jeden sloupec
- GROUP BY ve více sloupcích
- Použijte GROUP BY s ORDER BY
- GROUP BY s klauzulí HAVING
- Použijte GROUP BY s JOINS
Než přejdeme k příkladům použití klauzule GROUP BY, pochopme, co je GROUP BY v SQL a její syntaxi.
Příkaz SQL GROUP BY
Tento příkaz se používá k seskupení záznamů se stejnými hodnotami. Příkaz GROUP BY se často používá s agregačními funkcemi k seskupení výsledků podle jednoho nebo více sloupců. Kromě toho se klauzule GROUP BY používá také s klauzulí HAVING a JOINS k seskupení sady výsledků na základě podmínek.
SQL GROUP BY syntaxe
SELECT Column1, Column2,..., ColumnN FROM TableName WHERE Condition GROUP BY ColumnName(s) ORDER BY ColumnName(s);
Zde můžete přidat agregační funkce před názvy sloupců a také klauzuli HAVING na konec příkazu, která zmíní podmínku. Dále v tomto článku o SQL GROUP BY pochopíme, jak implementovat tento příkaz.
Příklady:
Pro vaše lepší pochopení jsem příklady rozdělil do následujících sekcí:
- Použijte GROUP BY pro jeden sloupec
- GROUP BY ve více sloupcích
- Použijte GROUP BY s ORDER BY
- GROUP BY s klauzulí HAVING
- Použijte GROUP BY s JOINS
Budu zvažovat následující tabulku, abych vám vysvětlil příklady:
EmpID | EmpName | EmpEmail | Telefonní číslo | Plat | Město |
1 | Nidhi | 9955669999 | 50 000 | Bombaj | |
2 | Anay | 9875679861 | 55 000 | Pune | |
3 | Rahul | 9876543212 | 35 000 | Dillí | |
4 | Sonia | 9876543234 | 35 000 | Dillí | |
5 | Akáš | 9866865686 | 25 000 | Bombaj |
Pojďme se podívat na každý z nich.
Použít SQL GROUP BY na jeden sloupec
Příklad:
Napište dotaz a zjistěte počet zaměstnanců v každém městě.
SELECT COUNT(EmpID), City FROM Employees GROUP BY City;
Výstup:
Uvidíte následující výstup:
Počet (EmpID) | Město |
2 | Dillí |
2 | Bombaj |
1 | Pune |
Použijte SQL GROUP BY pro více sloupců
Příklad:
Napište dotaz a zjistěte počet zaměstnanců s různými platy v každém městě.
SELECT City, Salary, Count(*) FROM Employees GROUP BY City, Salary;
Výstup:
Tabulka bude obsahovat následující údaje:
Město | Plat | Počet(*) |
Dillí | 35 000 | 2 |
Bombaj | 25 000 | 1 |
Bombaj | 50 000 | 1 |
Pune | 55 000 | 1 |
Použijte SQL GROUP BY s ORDER BY
Když použijeme příkaz SQL GROUP BY s klauzulí ORDER BY, budou hodnoty seřazeny buď vzestupně, nebo sestupně.
Příklad:
Napište dotaz a zjistěte počet zaměstnanců v každém městě, seřazený v sestupném pořadí.
SELECT COUNT(EmpID), City FROM Employees GROUP BY City ORDER BY COUNT(EmpID) DESC;
Výstup:
Tabulka bude obsahovat následující údaje:
Počet (EmpID) | Město |
2 | Dillí |
2 | Bombaj |
1 | Pune |
Použijte SQL GROUP BY s klauzulí HAVING
Příkaz SQL GROUP BY se používá s klauzulí „HAVING“ ke zmínce o podmínkách ve skupinách. Protože také nemůžeme použít agregační funkce s klauzulí WHERE, musíme k použití agregačních funkcí s GROUP BY použít klauzuli „HAVING“.
Příklad:
Napište dotaz a zjistěte počet zaměstnanců v každém městě s platem> 15 000
SELECT COUNT(EmpID), City FROM Employees GROUP BY City HAVING SALARY > 15000;
Výstup:
Protože všechny záznamy v tabulce Zaměstnanec mají plat> 15000, uvidíme jako výstup následující tabulku:
Počet (EmpID) | Město |
2 | Dillí |
2 | Bombaj |
1 | Pune |
Použijte GROUP BY s JOINS
JOINS jsou příkazy SQL používané ke spojení řádků ze dvou nebo více tabulek na základě souvisejícího sloupce mezi těmito tabulkami. K seskupení sady výsledků na základě sloupce/sloupců můžeme použít příkaz SQL GROUP BY. Při provádění příkazů JOIN s klauzulí SQL GROUP BY zvažte níže uvedené tabulky.
Tabulka projektů:
ID projektu | EmpID | ID klienta | Datum projektu |
2345 | 1 | 4 | 26-01-2019 |
9876 | 2 | 5 | 28-02-2019 |
3456 | 3 | 6 | 12-03-2019 |
Tabulka klientů:
ID klienta | Jméno klienta |
4 | Sanjana |
5 | Rohan |
6 | Arun |
Příklad
Napište dotaz a uveďte počet projektů požadovaných každým klientem:
SELECT Clients.ClientName, COUNT(Projects.ProjectID) AS RequestedProjects FROM Projects LEFT JOIN Clients ON Projects.ProjectID = Clients.ProjectID GROUP BY ClientName;
Výstup:
Tabulka bude obsahovat následující údaje:
Jméno klienta | Požadované projekty |
Arun | 1 |
Rohan | 1 |
Sanjana | 1 |
Tím se dostáváme ke konci článku SQL GROUP BY. Podívejte se na to Certifikační školení MySQL DBA od Edureka, důvěryhodné online vzdělávací společnosti se sítí oz více než 250 000 spokojených studentů po celém světě. Tento kurz vás naučí základní koncepty a pokročilé nástroje a techniky pro správu dat a správu databáze MySQL. Zahrnuje praktické učení pojmů jako MySQL Workbench, MySQL Server, Data Modeling, MySQL Connector, Návrh databáze, Příkazový řádek MySQL, Funkce MySQL atd. Na konci školení budete schopni vytvořit a spravovat vlastní databázi MySQL a spravovat data.
Máte na nás otázku? Uveďte to prosím v sekci komentářů tohoto článku „SQL GROUP BY“ a my se vám co nejdříve ozveme.