Introduktion till GROUP BY-klausulen i SQL
För de fall där vi måste gruppera raderna med samma värde kommer grupp efter klausul in i bilden. GROUP BY-klausulen är ett kommando i SQL som kommer att utföra denna operation.
Den viktiga punkten att komma ihåg här är att GROUP BY-klausulen används i SELECT-uttalandet i frågan efter WHERE-klausulen har använts.
Syntax
Syntaxen för grupp efter klausul är -
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Förklaring av syntaxen
- VÄLJ uttalande - SQL-kommandofråga
- tabellnamn - namnet på databastabellen som det hänvisas till
- villkor - hänvisa till villkoren som ska kontrolleras
- GROUP BY - klausul för att gruppera samma rader
- ORDER BY - används alltid efter Group By-klausul för att ordna raderna i stigande eller fallande ordning. Detta är ett valfritt villkor.
Hur GROUP BY Clause fungerar i SQL?
Låt oss ta hjälp av ett exempel för att förstå hur gruppen fungerar. Överväg en tabell med namn som MEDARBETARE som innehåller de grundläggande detaljerna för den anställde som namn, ålder, telefonnummer, dob, kön, adress, e-post-id, etc.
Medarbetartabell
namn | ålder | telefon | kön | e-post |
John | 23 | 123 | Manlig | |
Maj | 22 | 456 | Kvinna | |
Ana | 45 | 644 | Kvinna | |
kastruller | 57 | 3456 | Kvinna | |
Res | 45 | 456 | Kvinna | |
Solbränna | 78 | 2456 | Manlig | |
Ran | 34 | 5899 | Manlig | |
Glåmig | 55 | 7789 | Kvinna | |
Tung | 32 | 5689 | Manlig | |
Chung | 21 | 4678 | Manlig |
Tänk på att MEDARBETARE har cirka 10 poster.
Låt oss först hämta de olika värdena för ”kön” från denna tabell. Frågan som hjälper oss att uppnå vårt mål skulle vara -
SELECT gender FROM EMPLOYEE;
Detta ger oss följande värden-
kön |
Manlig |
Kvinna |
Kvinna |
Kvinna |
Kvinna |
Manlig |
Manlig |
Kvinna |
Manlig |
Manlig |
Problemet här är redundans för värdena, som vi kan se finns det bara två unika värden på kön i tabellen men utdata ger oss inte bara de unika värdena utan alla värden även om de är repetitiva.
Så för att få bara de unika värdena från tabellen använder vi följande fråga -
SELECT gender FROM EMPLOYEE GROUP BY gender;
Resultatet vi får efter att ha genomfört den här frågan blir -
kön |
Manlig |
Kvinna |
Group By kommer att gruppera alla samma värden i raderna tillsammans och bara returnera en enda post eller en enda rad för dem som det gjorde med raderna “Manlig” och “Kvinnlig” i tabellen. Detta resulterade i bara två unika värden som fanns i kolumnen ”kön”, t.ex. Kvinna och hane.
Låt oss nu ta ett annat exempel på en tabell som innehåller detaljerna om den avdelning som var och en av dessa anställda är kopplad till. Vi kommer att kalla detta en medarbetaravdelningstabell.
Tabell över anställdavdelningen
namn | TRÅG | avdelning |
John | hod1 | Service |
Maj | hod2 | Finansiera |
Ana | hod1 | Service |
kastruller | hod2 | Finansiera |
Res | hod3 | Tech |
Solbränna | hod5 | Stöd |
Ran | hod3 | Service |
Glåmig | hod3 | Tech |
Tung | hod3 | Finansiera |
Chung | hod5 | HR |
Så låt oss nu köra nedanstående fråga och leta efter resultatet -
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
Exekveringen av denna fråga hämtar följande resultat -
TRÅG | avdelning |
hod1 | Service |
hod2 | Finansiera |
hod3 | Tech |
hod5 | Stöd |
hod3 | Service |
hod3 | Finansiera |
hod5 | HR |
GROUP BY-klausulen fungerar både på hodet och i avdelningen för att leta efter de unika raderna i det ovan nämnda scenariot. Den kommer att kontrollera kombinationen av hod och avdelning mot andra poster i hodet och avdelningen för att identifiera dess unika. Om hodet är detsamma men avdelningen är annorlunda, behandlas den raden som en unik. Om hodet och avdelningen är densamma för mer än en rad skapas inte duplikatposten och endast en rad visas.
GRUPP AV Klausulverksamhet
Vi kan använda Group By-klausul med flera grupperings- och aggregeringsfunktioner. Låt oss ta några exempel med ovanstående två nämnda tabeller, dvs. anställda och medarbetaravdelning.
Exempel 1
Få antalet manliga anställda och kvinnliga anställda i företaget.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
Exekveringen av denna fråga hämtar följande resultat -
Count ( 'namn') | kön |
5 | Manlig |
5 | Kvinna |
Exempel 2
Få antalet avdelningar i företaget i fallande ordningsföljd.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
Exekveringen av denna fråga hämtar följande resultat -
Count ( 'namn') | avdelning |
3 | Service |
3 | Finansiera |
2 | Tech |
1 | Stöd |
1 | HR |
Exempel 3
Få antalet olika avdelningar under samma stomme i företaget i fallande ordningsföljd.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
Exekveringen av denna fråga hämtar följande resultat -
Count ( 'namn') | TRÅG | avdelning |
2 | hod1 | Service |
2 | hod2 | Finansiera |
2 | hod3 | Tech |
1 | hod5 | Stöd |
1 | hod3 | Service |
1 | hod3 | Finansiera |
1 | hod5 | HR |
HAVING-klausulen i SQL
Om du använder HAVING-klausulen med gruppen Av-klausulen kommer resultatet av frågan att begränsas till raderna med värdet som nämns med Having-klausulen.
Att förstå detta med ett exempel kommer att göra det enklare -
Exempel 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
Exekveringen av denna fråga hämtar följande resultat -
namn | ålder | telefon | kön | e-post |
Maj | 22 | 456 | Kvinna | |
Ana | 45 | 644 | Kvinna | |
kastruller | 57 | 3456 | Kvinna | |
Res | 45 | 456 | Kvinna | |
Glåmig | 55 | 7789 | Kvinna |
Exempel 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
Exekveringen av denna fråga hämtar följande resultat -
namn | TRÅG | avdelning |
Maj | hod2 | Finansiera |
kastruller | hod2 | Finansiera |
Tung | hod3 | Finansiera |
Slutsats
Med hjälp av GROUP BY-klausulen med SELECT-satsen kan vi gruppera rader med samma värden tillsammans med användning av aggregerade funktioner, konstanter och uttryck.
Rekommenderade artiklar
Detta är en guide till GROUP BY-klausulen i SQL. Här diskuterar vi hur GROUP BY Clause fungerar i SQL med hjälp av exempel och medarbetartabeller. Du kan också titta på följande artiklar för att lära dig mer -
- SQL Infoga fråga
- SQL Views
- Databas i SQL
- Transaktioner i SQL