Articles

SQL GROUP BY and HAVING Clause with Examples (Suomi)


What is the SQL Group by Clause?

ryhmä lausekkeella on SQL-komento, jolla ryhmitellään rivejä, joilla on samat arvot. Valitse-lausekkeessa käytetään ryhmäkohtaista lauseketta. Vaihtoehtoisesti sitä käytetään yhdessä aggregaattifunktioiden kanssa yhteenvetoraporttien tuottamiseen tietokannasta.

se on mitä se tekee, tiivistää tietokannan tiedot.

kyselyt, jotka sisältävät GROUP BY-lauseke kutsutaan ryhmitelty kyselyt ja palauttaa vain yhden rivin jokaista ryhmitelty tuote.,

SQL-ryhmä syntaksilla

nyt kun tiedämme, mikä SQL-ryhmä lausekkeella on, katsotaan perusryhmän syntaksia kyselyllä.

SELECT statements... GROUP BY column_name1 ;

  • ”VALITSE lausuntoja…”on standardi SQL SELECT-komentokysely.
  • ”ryhmä sarakkeen_name1 mukaan” on lauseke, joka suorittaa ryhmittelyn sarakkeen_name1 perusteella.
  • ” on valinnainen; edustaa muita sarakkeen nimiä, kun ryhmittely tehdään useammalla kuin yhdellä sarakkeella.
  • ”” on valinnainen; sitä käytetään ryhmän vaikuttamien rivien rajoittamiseen lausekkeella., Se muistuttaa WHERE-lauseketta.

Ryhmittelyä käyttämällä Yhden Sarakkeen

jotta ymmärtää vaikutus SQL: n Group By-lauseke, katsotaanpa suorittaa yksinkertainen kysely, joka palauttaa kaikki merkinnät sukupuoli jäseniltä taulukko.

SELECT `gender` FROM `members` ;


gender

Female


Female


Male


Female


Male


Male


Male


Male


Male


Oletetaan, että haluamme saada ainutlaatuinen arvot sukupuolia. Voimme käyttää seuraava kysely –

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

Suorittamalla edellä script MySQL workbench vastaan Myflixdb antaa meille seuraavat tulokset.,


gender

Female


Male


huomaa vain kaksi tulosta on palautettu. Tämä johtuu siitä, että meillä on vain kaksi sukupuolityyppiä mies ja nainen. Ryhmä lausekkeittain SQL ryhmitti kaikki ”Mies” jäsenet yhteen ja palautti sille vain yhden rivin. Se teki samoin ”naisjäsenten” kanssa.

Ryhmittely käyttäen useita sarakkeita

Oletetaan, että haluamme saada luettelon elokuvan category_id ja vastaava vuotta, jossa ne vapautettiin.,

katsotaanpa tarkkailla tuotos tämä yksinkertainen kysely

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

edellä tulos on paljon kaksoiskappaleita.

nyt suorittaa saman kyselyn avulla ryhmän SQL –

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

Suorittamalla edellä script MySQL workbench vastaan myflixdb antaa meille seuraavat tulokset alla.

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

ryhmä lausekkeella toimii sekä kategorian tunnus että Julkaistu Vuosi tunnistaakseen ainutlaatuiset rivit yllä olevassa esimerkissämme.,

Jos kategorian tunnus on sama, mutta Julkaistu Vuosi on erilainen, niin rivi käsitellään ainutlaatuisena .Jos kategorian tunnus ja Julkaistu Vuosi on sama useammalle kuin yhdelle riville, sitä pidetään kahtena ja näytetään vain yksi rivi.

ryhmittely-ja aggregaattitoiminnot

Oletetaan, että haluamme tietokantaamme miesten ja naisten kokonaismäärän. Voimme käyttää seuraavaa komentosarjaa alla.

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

Suorittamalla edellä script MySQL workbench vastaan myflixdb antaa meille seuraavat tulokset.,

gender COUNT('membership_number')
Female 3
Male 5

tulokset alla on ryhmitelty jokaisen yksilöllinen tasa-arvo lähetetty ja useita ryhmitelty rivit lasketaan käyttäen LASKEA aggregate-toimintoa.

kyselytulosten rajoittaminen käyttäen lauseketta

ei ole aina sitä, että haluamme tehdä ryhmittelyjä kaikkiin tietyn taulukon tietoihin. Joskus haluamme rajoittaa tuloksemme tiettyihin kriteereihin. Tällaisissa tapauksissa, voimme käyttää ottaa lauseke

oletetaan haluamme tietää kaikki julkaisuvuodet elokuva Luokka id 8., Käyttäisimme seuraavaa komentosarjaa saavuttaaksemme tuloksemme.

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

Suorittamalla edellä script MySQL workbench vastaan Myflixdb antaa meille seuraavat tulokset alla.

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

Huom.vain luokan id 8 elokuvat ovat vaikuttaneet ryhmäämme lausekkeella.

Yhteenveto

  • lausekkeella SQL ryhmitettyä ryhmää käytetään ryhmittämään rivejä, joilla on samat arvot.
  • ryhmää Lausekkeittain käytetään yhdessä SQL SELECT-lausekkeen kanssa.,
  • ryhmässä lausekkeittain käytetty select-lauseke voi sisältää vain sarakkeen nimiä, aggregaattifunktioita, vakioita ja lausekkeita.
  • SQL Having-lauseketta käytetään ryhmän palauttamien tulosten rajoittamiseen lausekkeella.
  • MySQL-ryhmää Lausekkeittain käytetään keräämään tietoja useista tietueista ja palauttamaan yhden tai useamman palstan asettama ennätys.