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
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.