MySQL-aggregaattitoimintojen opetusohjelma: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Kokoomatoiminnot ovat kyse

  • Suoritetaan laskutoimituksia useille riveille
  • Yhdestä taulukon sarakkeesta
  • Ja palauttamalla yhden arvon.

ISO-standardi määrittelee viisi (5) aggregaattitoimintoa, nimittäin;

1) LASKU

2) SUMMA
3) AVG
4) MIN
5) MAX

Miksi käyttää aggregaattitoimintoja.

Liiketoiminnan näkökulmasta eri organisaatiotasoilla on erilaiset tietovaatimukset. Ylimmän tason johtajat ovat yleensä kiinnostuneita tietämään kokonaislukuja eivätkä tarvitse yksittäisiä yksityiskohtia.

> Kokoomatoimintojen avulla voimme helposti tuottaa yhteenvetotietoja tietokannastamme.

Esimerkiksi myflix-tietokannastamme hallinta voi edellyttää seuraavia raportteja

  • Vähintään vuokratut elokuvat.
  • Useimmat vuokratut elokuvat.
  • Keskimääräinen määrä, jonka jokainen elokuva on vuokrattu kuukaudessa.

Tuotamme yllä olevat raportit helposti aggregaattitoimintojen avulla.

Tarkastellaan aggregaattitoimintoja yksityiskohtaisesti.

COUNT- toiminto

COUNT-funktio palauttaa määritetyn kentän arvojen kokonaismäärän. Se toimii sekä numeerisissa että ei-numeerisissa tietotyypeissä. Kaikki aggregaattitoiminnot sulkevat oletusarvoisesti pois arvot ennen tietojen käsittelyä.

COUNT (*) on COUNT-toiminnon erityinen toteutus, joka palauttaa määritetyn taulukon kaikkien rivien määrän. COUNT (*) ottaa huomioon myös nollat ​​ja kaksoiskappaleet.

Alla olevassa taulukossa on esitetty tiedot movierentals-taulukossa

viitenumero tapahtuman_päivä palautuspäivä jäsennumero movie_id elokuva_ palasi
11 20-06-2012 TYHJÄ 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14 21-06-2012 24-06-2012 2 2 0
15 23.06.2012 TYHJÄ 3 3 0

Oletetaan, että haluamme saada kuinka monta kertaa elokuva, jonka tunnus on 2, on vuokrattu

SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;

Yllä olevan kyselyn suorittaminen MySQL-työpöydällä myflixdb: tä vastaan ​​antaa meille seuraavat tulokset.

 
COUNT('movie_id')
3

DISTINCT- avainsana

DISTINCT-avainsana, jonka avulla voimme jättää kaksoiskappaleet pois tuloksistamme. Tämä saavutetaan ryhmittelemällä samanlaiset arvot yhteen.

Kun haluat arvostaa Distinct-käsitettä, suorita yksinkertainen kysely

SELECT `movie_id` FROM `movierentals`;
 
movie_id
1
2
2
2
3

Suoritetaan nyt sama kysely erillisellä avainsanalla -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Kuten alla on esitetty, erillinen jättää kaksoiskappaleet tulosten ulkopuolelle.

 
movie_id
1
2
3

MIN- toiminto

MIN-toiminto palauttaa pienimmän arvon määritetyssä taulukokentässä .

Oletetaan esimerkiksi, että haluamme tietää vuoden, jolloin kirjastomme vanhin elokuva julkaistiin. Voimme käyttää MySQL: n MIN-toimintoa saadaksesi halutut tiedot.

Seuraava kysely auttaa meitä saavuttamaan tämän

SELECT MIN(`year_released`) FROM `movies`;

Yllä olevan kyselyn suorittaminen MySQL-työpöydällä myflixdb: tä vastaan ​​antaa meille seuraavat tulokset.

 
MIN('year_released')
2005

MAX-toiminto

Aivan kuten nimestä voi päätellä, MAX-funktio on MIN-funktion vastakohta. Se palauttaa suurimman arvon määritetystä taulukokentästä .

Oletetaan, että haluamme saada vuoden, jolloin tietokantamme uusin elokuva julkaistiin. Voimme helposti käyttää MAX-toimintoa sen saavuttamiseksi.

Seuraava esimerkki palauttaa viimeisimmän julkaistun elokuvavuoden.

SELECT MAX(`year_released`) FROM `movies`;

Yllä olevan kyselyn suorittaminen MySQL-työpöydällä myflixdb: n avulla antaa meille seuraavat tulokset.

 
MAX('year_released')
2012

SUM- toiminto

Oletetaan, että haluamme raportin, joka sisältää tähän mennessä suoritettujen maksujen kokonaismäärän. Voimme käyttää MySQL SUM -funktiota, joka palauttaa kaikkien määritetyn sarakkeen arvojen summan . SUM toimii vain numeerisissa kentissä . Nolla-arvot jätetään pois palautetusta tuloksesta.

Seuraava taulukko näyttää maksutaulukon tiedot

maksu_ id jäsennumero maksupäivä kuvaus maksettu summa ulkoinen_viite _numero
1 1 23-07-2012 Elokuvavuokrausmaksu 2500 11
2 1 25-07-2012 Elokuvavuokrausmaksu 2000 12
3 3 30-07-2012 Elokuvavuokrausmaksu 6000 TYHJÄ

Alla esitetty kysely saa kaikki suoritetut maksut yhteen ja laskee ne yhteen tulokseen.

SELECT SUM(`amount_paid`) FROM `payments`;

Yllä olevan kyselyn suorittaminen MySQL-työpöydällä myflixdb: tä vastaan ​​antaa seuraavat tulokset.

 
SUM('amount_paid')
10500

AVG- toiminto

MySQL AVG -funktio palauttaa määritetyn sarakkeen arvojen keskiarvon . Aivan kuten SUM-toiminto, se toimii vain numeerisilla tietotyypeillä .

Oletetaan, että haluamme löytää keskimääräisen maksetun summan. Voimme käyttää seuraavaa kyselyä -

SELECT AVG(`amount_paid`) FROM `payments`;

Yllä olevan kyselyn suorittaminen MySQL-työpöydällä antaa meille seuraavat tulokset.

 
AVG('amount_paid')
3500

Yhteenveto

  • MySQL tukee kaikkia viittä (5) ISO-standardin mukaista aggregaattitoimintoa COUNT, SUM, AVG, MIN ja MAX.
  • SUM- ja AVG-toiminnot toimivat vain numeerisilla tiedoilla.
  • Jos haluat sulkea päällekkäiset arvot yhteen funktiotuloksista, käytä DISTINCT-avainsanaa. ALL-avainsana sisältää jopa kaksoiskappaleet. Jos mitään ei määritetä, oletetaan ALL oletusarvoksi.
  • Kokoomatoimintoja voidaan käyttää yhdessä muiden SQL-lausekkeiden, kuten GROUP BY, kanssa

Brain Teaser

Luulet, että aggregaattitoiminnot ovat helppoja. Kokeile tätä!

Seuraava esimerkki ryhmittelee jäsenet nimen mukaan, laskee maksujen kokonaismäärän, keskimääräisen maksusumman ja maksusummien kokonaissumman.

SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

Yllä olevan esimerkin suorittaminen MySQL-työpöydällä antaa meille seuraavat tulokset.