Articles

SQL grupp av och med klausul med exempel


Vad är SQL grupp efter Klausul?

GROUP BY-klausulen är ett SQL-kommando som används för att gruppera rader med samma värden. Grupp för klausul används i Select-satsen. Eventuellt används det tillsammans med aggregerade funktioner för att producera sammanfattande rapporter från databasen.

det är vad det gör, sammanfattar data från databasen.

de frågor som innehåller grupp efter klausul kallas grupperade frågor och returnerar bara en enda rad för varje grupperat objekt.,

SQL GROUP BY Syntax

nu när vi vet vad SQL GROUP BY clause är, låt oss titta på syntaxen för en grundläggande grupp efter fråga.

SELECT statements... GROUP BY column_name1 ;

Här

  • ”välj satser…”är standard SQL SELECT kommando fråga.
  • ”GROUP BY column_name1” är den klausul som utför grupperingen baserat på column_name1.
  • ”” är valfritt; representerar andra kolumnnamn när grupperingen görs på mer än en kolumn.
  • ”” är valfritt; det används för att begränsa de rader som påverkas av grupp efter klausul., Det liknar WHERE-klausulen.

gruppering med en enda kolumn

för att förstå effekten av SQL grupp efter klausul, låt oss köra en enkel fråga som returnerar alla könsposter från tabellen medlemmar.

SELECT `gender` FROM `members` ;


gender

Female


Female


Male


Female


Male


Male


Male


Male


Male


anta att vi vill få de unika värdena för könen. Vi kan använda en följande fråga –

SELECT `gender` FROM `members` GROUP BY `gender`;

utför ovanstående skript i MySQL workbench mot Myflixdb ger oss följande resultat.,


gender

Female


Male


Observera endast två resultat har returnerats. Detta beror på att vi bara har två könstyper man och kvinna. Gruppen efter klausul i SQL grupperade alla” manliga ” medlemmar tillsammans och returnerade bara en enda rad för den. Det gjorde detsamma med de” kvinnliga ” medlemmarna.

gruppering med flera kolumner

Antag att vi vill få en lista över movie category_id och motsvarande år där de släpptes.,

låt oss observera utgången från denna enkla fråga

SELECT `category_id`,`year_released` FROM `movies` ;

category_id year_released
1 2011
2 2008
NULL 2008
NULL 2010
8 2007
6 2007
6 2007
8 2005
NULL 2012
7 1920
8 NULL
8 1920

ovanstående resultat har många dubbletter.

låt oss köra samma fråga med hjälp av group by i SQL –

SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;

exekvera ovanstående skript i MySQL workbench mot myflixdb ger oss följande resultat som visas nedan.

category_id year_released
NULL 2008
NULL 2010
NULL 2012
1 2011
2 2008
6 2007
7 1920
8 1920
8 2005
8 2007

grupp för klausul fungerar både på kategori-id och år som släpps för att identifiera unika rader i vårt exempel ovan.,

Om kategori-id är detsamma men det år som släpps är annorlunda behandlas en rad som en unik.Om kategori-id och det år som släpps är samma för mer än en rad, anses det vara en dubblett och endast en rad visas.

gruppering och aggregerade funktioner

Antag att vi vill ha totalt antal män och kvinnor i vår databas. Vi kan använda följande skript som visas nedan för att göra det.

SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;

utför ovanstående skript i MySQL workbench mot myflixdb ger oss följande resultat.,

gender COUNT('membership_number')
Female 3
Male 5

resultaten som visas nedan är grupperade efter varje unikt könsvärde som publiceras och antalet grupperade rader räknas med hjälp av COUNT aggregate-funktionen.

begränsa sökresultaten med hjälp av klausulen ha

det är inte alltid att vi kommer att vilja utföra grupperingar på alla data i en given tabell. Det kommer att finnas tillfällen då vi kommer att vilja begränsa våra resultat till vissa givna kriterier. I sådana fall kan vi använda klausulen ha

anta att vi vill veta alla Utgivningsår för filmkategori id 8., Vi skulle använda följande skript för att uppnå våra resultat.

SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;

utför ovanstående skript i MySQL workbench mot Myflixdb ger oss följande resultat som visas nedan.

movie_id title director year_released category_id
9 Honey mooners John Schultz 2005 8
5 Daddy's Little Girls NULL 2007 8

Observera endast filmer med kategori-id 8 har påverkats av vår grupp efter klausul.

sammanfattning

  • gruppen efter klausul SQL används för att gruppera rader med samma värden.
  • grupp för Klausul används tillsammans med SQL SELECT-satsen.,
  • SELECT-satsen som används i group BY-satsen kan endast användas innehåller kolumnnamn, aggregerade funktioner, konstanter och uttryck.
  • SQL Having-klausulen används för att begränsa de resultat som returneras av GROUP BY-klausulen.
  • MYSQL GROUP BY Clause används för att samla in data från flera poster och returnerade postuppsättning av en eller flera kolumner.