Articles

SQL GROUP by a mající klauzuli s příklady


co je SQL Group By klauzule?

skupina podle klauzule je příkaz SQL, který se používá ke skupině řádků, které mají stejné hodnoty. Skupina podle klauzule se používá v příkazu SELECT. Volitelně se používá ve spojení s agregovanými funkcemi k vytváření souhrnných zpráv z databáze.

to je to, co dělá, shrnující data z databáze.

dotazy, které obsahují klauzuli skupina Podle, se nazývají seskupené dotazy a vracejí pouze jeden řádek pro každou seskupenou položku.,

SQL GROUP podle syntaxe

Nyní, když víme, co je SQL group by clause, podívejme se na syntaxi pro základní skupinu podle dotazu.

SELECT statements... GROUP BY column_name1 ;

zde

  • “ Vyberte příkazy…“je standardní příkazový dotaz SQL SELECT.
  • „GROUP BY column_name1“ je klauzule, která provádí seskupení založené na column_name1.
  • „“ je volitelné; představuje další názvy sloupců, když se seskupení provádí na více než jednom sloupci.
  • „“ je volitelný; používá se k omezení řádků ovlivněných skupinou klauzulí., Je to podobné klauzuli WHERE.

seskupení pomocí jediného sloupce

abychom pomohli pochopit účinek skupiny SQL podle klauzule, provedeme jednoduchý dotaz, který vrátí všechny položky pohlaví z tabulky členů.

SELECT `gender` FROM `members` ;


gender

Female


Female


Male


Female


Male


Male


Male


Male


Male


Předpokládejme, že chceme získat jedinečné hodnoty pro pohlaví. Můžeme použít následující dotaz –

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

Provádění výše uvedený skript v MySQL workbench proti Myflixdb nám dává tyto výsledky.,


gender

Female


Male


Poznámka pouze dva výsledky byly vráceny. Je to proto, že máme pouze dva typy pohlaví Muž A Žena. Skupina podle klauzule v SQL seskupila všechny“ mužské “ členy dohromady a vrátila pro ně pouze jeden řádek. Totéž se stalo s“ ženskými “ členy.

seskupení pomocí více sloupců

Předpokládejme, že chceme získat seznam filmů category_id a odpovídající roky, ve kterých byly vydány.,

pozorujte výstup tento jednoduchý dotaz

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

výše uvedený výsledek má mnoho duplikátů.

řekněme, spustit stejný dotaz pomocí group by v SQL –

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

Provádění výše uvedený skript v MySQL workbench proti myflixdb nám dává tyto výsledky jsou uvedeny níže.

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

skupina podle klauzule pracuje jak na id Kategorie, tak na roce vydaném k identifikaci jedinečných řádků v našem výše uvedeném příkladu.,

Pokud je id Kategorie stejné, ale vydaný rok je jiný ,je řádek považován za jedinečný.Pokud je id kategorie a Rok vydání stejný pro více než jeden řádek, považuje se za duplikát a zobrazí se pouze jeden řádek.

seskupování a agregační funkce

Předpokládejme, že v naší databázi chceme celkový počet mužů a žen. K tomu můžeme použít následující skript uvedený níže.

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

Provádění výše uvedený skript v MySQL workbench proti myflixdb nám dává tyto výsledky.,

gender COUNT('membership_number')
Female 3
Male 5

níže uvedené výsledky jsou seskupeny podle každé jedinečné hodnoty pohlaví a počet seskupených řádků se počítá pomocí funkce sčítání.

omezení výsledků dotazu pomocí klauzule mající

ne vždy budeme chtít provádět seskupení na všech datech v dané tabulce. Budou chvíle, kdy budeme chtít omezit naše výsledky na určitá daná kritéria. V takových případech můžeme použít klauzuli S

Předpokládejme , že chceme znát všechny roky vydání pro filmovou kategorii id 8., K dosažení našich výsledků bychom použili následující skript.

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

provedení výše uvedeného skriptu v MySQL workbench proti Myflixdb nám dává následující výsledky uvedené níže.

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

Poznámka pouze filmy s ID Kategorie 8 byly ovlivněny naší skupinou klauzulí.

shrnutí

  • skupina podle klauzule SQL se používá ke skupině řádků se stejnými hodnotami.
  • skupina podle klauzule se používá společně s příkazem SQL SELECT.,
  • příkaz SELECT použitý v klauzuli GROUP BY lze použít pouze názvy sloupců, agregované funkce, konstanty a výrazy.
  • SQL Having Clause se používá k omezení výsledků vrácených skupinou klauzulí.
  • MYSQL GROUP by Clause se používá ke sběru dat z více záznamů a vráceného záznamu nastaveného jedním nebo více sloupci.