Kokoonpanofunktiot sisään MySQL
Kokoonpanofunktioissa on kyse
- Suoritetaan laskutoimituksia useilla riveillä
- Taulukon yhdestä sarakkeesta
- Ja palauttaa yhden arvon.
ISO-standardi määrittelee viisi (5) aggregaattifunktiota, nimittäin;
1) LASKE
2) SUMMA
3) AVG
4) MIN
5) MAX
Miksi käyttää aggregaattifunktioita
Liiketoiminnan näkökulmasta eri organisaatiotasoilla on erilaiset tietovaatimukset. Ylimmän tason johtajat ovat yleensä kiinnostuneita tietämään kokonaisia lukuja, eivät välttämättä yksittäisiä yksityiskohtia.
Aggregaattitoimintojen avulla voimme helposti tuottaa yhteenvetotietoja tietokannastamme.
Esimerkiksi myflix-tietokannastamme johto saattaa vaatia seuraavia raportteja
- Vähiten vuokratut elokuvat.
- Useimmat vuokratut elokuvat.
- Keskimääräinen määrä, jonka jokainen elokuva vuokrataan kuukaudessa.
Tuotamme yllä olevat raportit helposti koontifunktioiden avulla.
Tarkastellaan aggregaattifunktioita yksityiskohtaisesti.
COUNT-toiminto
COUNT-funktio palauttaa määritetyn kentän arvojen kokonaismäärän. Se toimii sekä numeerisissa että ei-numeerisissa tietotyypeissä. Kaikki koontifunktiot jättävät oletusarvoisesti pois nolla-arvot ennen tietojen käsittelemistä.
COUNT (*) on COUNT-funktion erityinen toteutus, joka palauttaa määritetyn taulukon kaikkien rivien määrän. COUNT (*) ottaa myös huomioon nollat ja kaksoiskappaleet.
Alla oleva taulukko näyttää tiedot elokuvavuokrataulukosta
| viitenumero | tapahtuma_päivä | palautuspäivä | jäsennumero | elokuvan_tunnus | elokuva_ palasi |
|---|---|---|---|---|---|
| 11 | 20-06-2012 | NULL | 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 | NULL | 3 | 3 | 0 |
Oletetaan, että haluamme saada, kuinka monta kertaa tunnuksella 2 oleva elokuva on vuokrattu
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Suoritetaan yllä oleva kysely sisään MySQL työpöytä 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.
Jos haluat ymmärtää Distinct-konseptin, suoritetaan 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 näkyy , differentiaali jättää päällekkäiset tietueet pois tuloksista.
| movie_id |
|---|
| 1 |
| 2 |
| 3 |
MIN-toiminto
MIN-toiminto palauttaa pienimmän arvon määritetyssä taulukkokentässä.
Oletetaan esimerkiksi, että haluamme tietää vuoden, jolloin kirjastomme vanhin elokuva julkaistiin, voimme käyttää MySQLMIN-toimintoa saadaksesi haluamasi tiedot.
Seuraava kysely auttaa meitä saavuttamaan sen
SELECT MIN(`year_released`) FROM `movies`;
Suoritetaan yllä oleva kysely sisään MySQL työpenkki myflixdb:tä vastaan antaa meille seuraavat tulokset.
| MIN('year_released') |
|---|
| 2005 |
MAX-toiminto
Kuten nimestä voi päätellä, MAX-toiminto on MIN-funktion vastakohta. Se palauttaa suurimman arvon määritetystä taulukkokentästä.
Oletetaan, että haluamme saada tietokannassamme olevan viimeisimmän elokuvan julkaisuvuoden. Voimme helposti käyttää MAX-toimintoa saavuttaaksemme sen.
Seuraava esimerkki palauttaa viimeisimmän julkaistun elokuvavuoden.
SELECT MAX(`year_released`) FROM `movies`;
Suoritetaan yllä oleva kysely sisään MySQL työpenkki myflixdb:llä antaa meille seuraavat tulokset.
| MAX('year_released') |
|---|
| 2012 |
SUM-toiminto
Oletetaan, että haluamme raportin, joka kertoo tähän mennessä suoritettujen maksujen kokonaismäärän. Voimme käyttää MySQL SUMMA toiminto, joka palauttaa määritetyn sarakkeen kaikkien arvojen summan. SUM toimii vain numeerisissa kentissä. Nolla-arvot jätetään pois palautetusta tuloksesta.
Seuraava taulukko näyttää tiedot maksutaulukossa-
| maksu_tunnus | jäsennumero | maksupäivä | kuvaus | maksettu summa | ulkoinen_ viite _numero |
|---|---|---|---|---|---|
| 1 | 1 | 23-07-2012 | Elokuvan vuokran maksu | 2500 | 11 |
| 2 | 1 | 25-07-2012 | Elokuvan vuokran maksu | 2000 | 12 |
| 3 | 3 | 30-07-2012 | Elokuvan vuokran maksu | 6000 | NULL |
Alla näkyvä kysely kerää kaikki suoritetut maksut ja laskee ne yhteen tulokseen.
SELECT SUM(`amount_paid`) FROM `payments`;
Suoritetaan yllä oleva kysely sisään MySQL työpenkki myflixdb:tä vastaan antaa seuraavat tulokset.
| SUM('amount_paid') |
|---|
| 10500 |
AVG toiminto
MySQL AVG toiminto palauttaa määritetyn sarakkeen arvojen keskiarvon. Aivan kuten SUM-funktio, 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`;
Suoritetaan yllä oleva kysely sisään MySQL työpenkki, antaa meille seuraavat tulokset.
| AVG('amount_paid') |
|---|
| 3500 |
Brain Teaser
Luuletko, että aggregaatit ovat helppoja. Kokeile tätä!
Seuraava esimerkki ryhmittelee jäsenet nimen mukaan, laskee maksujen kokonaismäärän, keskimääräisen maksusumman ja maksusummien loppusumman.
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`;
Suorita yllä oleva esimerkki sisään MySQL työpöytä antaa meille seuraavat tulokset.
Yhteenveto
- MySQL tukee kaikkia viittä (5) ISO-standardin mukaista aggregaattifunktiota COUNT, SUM, AVG, MIN ja MAX.
- SUMMA ja AVG toiminnot toimivat vain numeerisilla tiedoilla.
- Jos haluat sulkea pois päällekkäiset arvot koostefunktion tuloksista, käytä DISTINCT-avainsanaa. Avainsana KAIKKI sisältää jopa kaksoiskappaleet. Jos mitään ei ole määritetty, ALL oletetaan oletusarvoksi.
- Aggregate-funktioita voidaan käyttää yhdessä muiden SQL-lauseiden kanssa, kuten GROUP BY


