Articles

SQL GROUP by and HAVING Clause with Examples (Magyar)

mi az SQL Group By Clause?

a csoport by záradék egy SQL parancs, amelyet azonos értékekkel rendelkező sorok csoportosítására használnak. A csoportonkénti záradékot a SELECT utasítás Használja. Opcionálisan az összesített funkciókkal együtt használják összefoglaló jelentések készítésére az adatbázisból.

Ez az, amit csinál, összegezve az adatokat az adatbázisból.

a csoportonkénti lekérdezéseket csoportosított lekérdezéseknek nevezzük, és minden csoportosított elemhez csak egy sort adunk vissza.,

SQL csoport szintaxis

most, hogy tudjuk, mi az SQL csoport záradék szerint, nézzük meg az alapcsoport szintaxisát lekérdezés szerint.

SELECT statements... GROUP BY column_name1 ;

itt

  • ” SELECT statements…”a szabványos SQL SELECT parancs lekérdezés.
  • “GROUP by column_name1” az a záradék, amely végrehajtja a csoportosítás alapján column_name1.
  • “” nem kötelező; más oszlopneveket jelöl, ha a csoportosítás egynél több oszlopon történik.
  • “” nem kötelező; a csoport által érintett sorok záradékkal történő korlátozására szolgál., Hasonló a hol záradékhoz.

csoportosítás egyetlen oszlop segítségével

annak érdekében, hogy megértsük az SQL csoport hatását záradékkal, hajtsunk végre egy egyszerű lekérdezést, amely visszaadja a tagok táblázatának összes nemi bejegyzését.

SELECT `gender` FROM `members` ;


gender

Female


Female


Male


Female


Male


Male


Male


Male


Male


tegyük fel, hogy szeretnénk megkapni a nemek egyedi értékeit. A következő lekérdezést használhatjuk –

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

a fenti szkript végrehajtása a MySQL workbench-ben a Myflixdb ellen a következő eredményeket adja nekünk.,


gender

Female


Male


Megjegyzés Csak két eredmény került vissza. Ennek az az oka, hogy csak két nemünk van Férfi és nő. Az SQL-ben a csoport záradék szerint csoportosította az összes “férfi” tagot, és csak egy sort adott vissza. Ugyanezt tette a” női ” tagokkal is.

csoportosítás több oszlop használatával

tegyük fel, hogy szeretnénk egy listát kapni a film kategóriáiról_id és a megfelelő évekről, amelyekben kiadták őket.,

figyeljük meg ennek az egyszerű lekérdezésnek a kimenetét

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

a fenti eredménynek sok másolata van.

hajtsuk végre ugyanazt a lekérdezést a group by in SQL –

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

a fenti szkript végrehajtása a MySQL workbench-ben a myflixdb ellen az alábbi eredményeket adja meg.

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

a csoport által záradék működik mind a kategória id, mind az év megjelent azonosítani egyedi sorok a fenti példában.,

Ha a kategória azonosítója azonos, de a kiadott év eltérő, akkor egy sort egyedinek tekintünk .Ha a kategória azonosítója és a kiadott év több mint egy sor esetében azonos, akkor másodpéldánynak tekintendő, és csak egy sor jelenik meg.

csoportosítási és aggregációs funkciók

tegyük fel, hogy teljes számú hímet és nőstényt akarunk az adatbázisunkban. Ehhez az alábbi szkriptet használhatjuk.

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

a fenti szkript végrehajtása a MySQL workbench-ben a myflixdb ellen a következő eredményeket adja nekünk.,

gender COUNT('membership_number')
Female 3
Male 5

az alább látható eredményeket minden egyes közzétett nemek szerinti érték csoportosítja, és a csoportosított sorok számát A COUNT aggregate függvény segítségével számolja.

A lekérdezési eredmények korlátozása a

birtoklási záradék használatával nem mindig szeretnénk csoportosításokat végrehajtani egy adott táblázat összes adatán. Lesznek idők, amikor az eredményeinket egy adott kritériumra akarjuk korlátozni. Ilyen esetekben, tudjuk használni a birtoklás záradék

tegyük fel, hogy szeretnénk tudni, hogy az összes kiadási év film kategória id 8., Eredményeink eléréséhez a következő szkriptet használnánk.

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

a fenti szkript végrehajtása a MySQL workbench-ben a Myflixdb ellen az alábbi eredményeket adja meg.

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

Megjegyzés csoportunk csak az id 8 kategóriájú filmeket érintette a záradék.

összefoglaló

  • az SQL záradék szerinti csoport az azonos értékű sorok csoportosítására szolgál.
  • A csoport by záradék az SQL SELECT utasítással együtt használható.,
  • a csoport által használt SELECT utasítás csak oszlopneveket, aggregált függvényeket, állandókat és kifejezéseket tartalmazhat.
  • az SQL Having záradék a csoport által a záradék által visszaküldött eredmények korlátozására szolgál.
  • a MySQL csoport a záradék szerint több rekordból gyűjt adatokat, majd egy vagy több oszlop által beállított rekordokat.