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

  1. VÄLJ uttalande - SQL-kommandofråga
  2. tabellnamn - namnet på databastabellen som det hänvisas till
  3. villkor - hänvisa till villkoren som ska kontrolleras
  4. GROUP BY - klausul för att gruppera samma rader
  5. 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åldertelefonköne-post
John23123Manlig
Maj22456Kvinna
Ana45644Kvinna
kastruller573456Kvinna
Res45456Kvinna
Solbränna782456Manlig
Ran345899Manlig
Glåmig557789Kvinna
Tung325689Manlig
Chung214678Manlig

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

namnTRÅGavdelning
Johnhod1Service
Majhod2Finansiera
Anahod1Service
kastrullerhod2Finansiera
Reshod3Tech
Solbrännahod5Stöd
Ranhod3Service
Glåmighod3Tech
Tunghod3Finansiera
Chunghod5HR

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ÅGavdelning
hod1Service
hod2Finansiera
hod3Tech
hod5Stöd
hod3Service
hod3Finansiera
hod5HR

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
5Manlig
5Kvinna

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
3Service
3Finansiera
2Tech
1Stöd
1HR

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ÅGavdelning
2hod1Service
2hod2Finansiera
2hod3Tech
1hod5Stöd
1hod3Service
1hod3Finansiera
1hod5HR

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åldertelefonköne-post
Maj22456Kvinna
Ana45644Kvinna
kastruller573456Kvinna
Res45456Kvinna
Glåmig557789Kvinna

Exempel 5

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

Exekveringen av denna fråga hämtar följande resultat -

namnTRÅGavdelning
Majhod2Finansiera
kastrullerhod2Finansiera
Tunghod3Finansiera

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 -

  1. SQL Infoga fråga
  2. SQL Views
  3. Databas i SQL
  4. Transaktioner i SQL