Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Vijesti
  • Ms sql agregatne funkcije. Grupiranje u SQL-u: GROUP BY, HAVING klauzule i agregatne funkcije

Ms sql agregatne funkcije. Grupiranje u SQL-u: GROUP BY, HAVING klauzule i agregatne funkcije

Korištenje agregatnih funkcija

SQL definira mnoge ugrađene funkcije različitih kategorija među kojima posebno mjesto zauzimaju agregatne funkcije, koji rade na vrijednostima stupaca više redaka i vraćaju jednu vrijednost. Argumenti za funkcije agregiranja mogu biti i stupci tablice i rezultati izraza nad njima. Same agregatne funkcije mogu biti uključene u druge aritmetičke izraze. Sljedeća tablica prikazuje najčešće korištene standardne unarne agregatne funkcije.


Opći format unarne agregatne funkcije je sljedeći:

naziv_funkcije([SVI | DISTINCT] izraz)

gdje DISTINCT navodi da funkcija treba uzeti u obzir samo različite vrijednosti argumenta, a ALL navodi sve vrijednosti, uključujući duplikate (ovo je zadana vrijednost). Na primjer, AVG funkcija s ključnom riječi DISTINCT za retke stupaca s vrijednostima 1, 1, 1 i 3, vratit će 2, a s ključnom riječi ALL, vratit će 1,5.

Skupne funkcije koriste se u klauzulama SELECT i HAVING. Ovdje ćemo pogledati njihovu upotrebu u klauzuli SELECT. U ovom slučaju, izraz u argumentu funkcije primjenjuje se na sve retke u ulaznoj tablici klauzule SELECT. Osim toga, klauzula SELECT ne može koristiti i agregatne funkcije i stupce tablice (ili izraze s njima) u nedostatku klauzule GROUP BY, što ćemo pogledati u sljedeći odjeljak.

Funkcija COUNT ima dva formata. U prvom slučaju vraća se broj redaka u ulaznoj tablici; u drugom slučaju vraća se broj vrijednosti argumenata u ulaznoj tablici:

  • RAČUNATI(*)
  • COUNT(izraz)

Najjednostavniji način korištenja ove funkcije je brojanje redaka u tablici (svi ili zadovoljavajući navedeno stanje). Za to se koristi prva opcija sintakse.

Upit: Broj vrsta proizvoda za koje su informacije dostupne u bazi podataka.

SELECT COUNT(*) AS "Broj vrsta proizvoda"

OD proizvoda

Druga verzija sintakse funkcije COUNT može uzeti naziv jednog stupca kao argument. U ovom slučaju broji se broj ili svih vrijednosti u ovom stupcu ulazne tablice ili samo onih koje se ne ponavljaju (pomoću ključne riječi DISTINCT).

Upit: Broj različitih imena sadržanih u tablici Kupac.

ODABIR BROJA (DISTINCT FNAME)

OD kupca

Upotreba preostalih unarnih agregatnih funkcija slična je COUNT, osim što za funkcije MIN i MAX upotreba ključnih riječi DISTINCT i ALL nema smisla. Uz funkcije COUNT, MAX i MIN, osim numeričkih polja mogu se koristiti i znakovna polja. Ako argument agregatne funkcije ne sadrži vrijednosti, funkcija COUNT vraća 0, a sve ostale vraćaju NULL.

SELECT MAX (OrdDate)

IZ

WHERE Datum naredbe"1.09.2010"

Zadatak za samostalan rad: Navedite to SQL jezik upite za dohvaćanje sljedećih podataka:

  • Ukupni trošak svih narudžbi;
  • Broj različitih gradova sadržanih u tablici Kupac.

Za sažetak informacija sadržanih u bazi podataka, SQL pruža agregatne funkcije. Skupna funkcija uzima cijeli stupac podataka kao argument i vraća jednu vrijednost koja sažima taj stupac na određeni način.

Na primjer, agregatna funkcija AVG() uzima stupac brojeva kao argument i izračunava njihov prosjek.

Da biste izračunali prosječni dohodak po glavi stanovnika Zelenograda, potreban vam je sljedeći upit:

ODABERITE 'PROSJEČNI DOHODAK PO STANOVNIKU=', PROSJEČNA (SUMD)

SQL ima šest agregatnih funkcija koje vam omogućuju da dobijete različite vrste sažetak informacija (slika 1):

– SUM() izračunava zbroj svih vrijednosti sadržanih u stupcu;

– AVG() izračunava prosjek vrijednosti sadržanih u stupcu;

– MIN() pronalazi najmanju od svih vrijednosti sadržanih u stupcu;

– MAX() pronalazi najveću među svim vrijednostima sadržanim u stupcu;

– COUNT() broji broj vrijednosti sadržanih u stupcu;

– COUNT(*) broji broj redaka u tablici rezultata upita.

Argument agregatne funkcije može biti jednostavno ime stupca, kao u prethodnom primjeru, ili izraz, kao u sljedećem upitu, koji navodi izračun prosječnog poreza po glavi stanovnika:

ODABERI PROSJ.(SUMD*0,13)

Ovaj upit stvara privremeni stupac koji sadrži vrijednosti (SUMD*0,13) za svaki redak tablice PERSON, a zatim izračunava prosjek privremenog stupca.

Iznos prihoda za sve stanovnike Zelenograda može se izračunati pomoću agregatne funkcije SUM:

SELECT SUM(SUMD) FROM PERSON

Skupna funkcija također se može koristiti za izračunavanje ukupnih zbrojeva iz tablice rezultata dobivenih spajanjem nekoliko izvornih tablica. Na primjer, možete izračunati ukupni iznos prihod koji rezidenti ostvaruju iz izvora koji se zove "stipendija":

ODABIR SUM(NOVAC)

OD DOBITI, IMATI_D

WHERE PROFIT.ID=HAVE_D.ID

I PROFIT.SOURCE=’Stipendija’

Skupne funkcije MIN() i MAX() omogućuju pronalaženje najmanjih i najvećih vrijednosti u tablici. Stupac može sadržavati numeričke ili znakovne vrijednosti ili vrijednosti datuma ili vremena.

Na primjer, možete definirati:

(a) najniži ukupni prihod koji ostvaruju rezidenti i najviši porez koji se plaća:

ODABIR MIN(SUMD), MAX(SUMD*0,13)

(b) datumi rođenja najstarijeg i najmlađeg stanovnika:

ODABIR MIN(RDATE), MAX(RDATE)

(c) prezimena, imena i oca prvih i zadnjih stanovnika u popisu, poredana abecednim redom:

ODABIR MIN(FIO), MAX(FIO)

Kada koristite ove agregatne funkcije, morate zapamtiti da se numerički podaci uspoređuju pomoću aritmetičkih pravila, datumi se uspoređuju sekvencijalno (ranije datumske vrijednosti smatraju se manjim od kasnijih), a vremenski intervali se uspoređuju na temelju njihovog trajanja.

Korištenje MIN funkcije() i MAX() s podacima niza, rezultat usporedbe dva niza ovisi o korištenoj tablici kodiranja znakova.

Skupna funkcija COUNT() broji broj vrijednosti u stupcu bilo koje vrste:

(a) koliko stanova ima u 1. mikrodistriktu?

SELECT COUNT(ADR) FROM FLAT WHERE ADR LIKE "%, 1_ _-%"

(b) koliko stanovnika ima izvore prihoda?

SELECT COUNT(DISTINCT NOM) FROM HAVE_D

(c) koliko izvora prihoda koriste stanovnici?

SELECT COUNT(DISTINCT ID) FROM HAVE_D (Ključna riječ DISTINCT navodi da se neduplicirane vrijednosti u stupcu broje).

Posebna agregatna funkcija COUNT(*) broji retke u tablici rezultata, a ne vrijednosti podataka:

(a) koliko stanova ima u 2. mikrodistriktu?

SELECT COUNT(*) FROM FLAT WHERE ADR LIKE "%, 2__-%"

(b) koliko izvora prihoda ima Ivan Ivanovič Ivanov?

SELECT COUNT(*) FROM PERSON, HAVE_D WHERE FIO="Ivanov Ivan Ivanovich" AND PERSON.NOM=HAVE_D.NOM

(c) koliko stanovnika živi u stanu na određenoj adresi?

SELECT COUNT(*) FROM PERSON WHERE ADR="Zelenograd, 1001-45"

Jedan od načina da shvatite kako se izvode sumarni upiti s agregatnim funkcijama jest zamisliti izvršenje upita podijeljeno na dva dijela. Prvo utvrđujemo kako bi upit funkcionirao bez agregatnih funkcija, vraćajući više redaka rezultata. Skupne funkcije se zatim primjenjuju na rezultate upita, vraćajući jedan rezultirajući redak.

Na primjer, razmotrite sljedeći složeni upit: pronađite prosječni ukupni prihod po glavi stanovnika, zbroj ukupnog prihoda stanovnika i prosječni izvorni prinos kao postotak ukupnog prihoda stanovnika. Operater daje odgovor

SELECT PROSJ.(SUMD), SUM(SUMD), (100*PROSJEC(NOVAC/SUMD)) FROM PERSON, PROFIT, HAVE_D WHERE PERSON.NOM=HAVE_D.NOM AND HAVE_D.ID=PROFIT.ID

Bez agregatnih funkcija, upit bi izgledao ovako:

SELECT SUMD, SUMD, MONEY/SUMD FROM PERSON, PROFIT, HAVE_D WHERE PERSON.NOM=HAVE_D.NOM AND HAVE_D.ID=PROFIT.ID

i vratio bi jedan redak rezultata za svakog stanovnika i određeni izvor prihoda. Skupne funkcije koriste stupce tablice rezultata upita za izradu tablice s jednim redom sa sažetim rezultatima.

Možete navesti agregatnu funkciju u vraćenom retku stupca umjesto bilo kojeg naziva stupca. Na primjer, može biti dio izraza koji zbraja ili oduzima vrijednosti dviju agregatnih funkcija:

ODABERITE MAX(SUMD)-MIN(SUMD) OD OSOBE

Međutim, agregatna funkcija ne može biti argument drugoj agregatnoj funkciji, tj. Ugniježđene agregatne funkcije su zabranjene.

Također, popis vraćenih stupaca ne može istovremeno koristiti agregatne funkcije i uobičajene nazive stupaca jer to nema smisla, na primjer:

ODABERITE FIO, SUM(SUMD) OD OSOBE

Ovdje prvi element popisa upućuje DBMS da kreira tablicu koja će se sastojati od nekoliko redaka i sadržavati po jedan red za svakog stanovnika. Drugi element popisa traži od DBMS-a da dobije jednu vrijednost rezultata, koja je zbroj vrijednosti u stupcu SUMD. Ove dvije upute proturječe jedna drugoj, što dovodi do pogreške.

Navedeno se ne odnosi na slučajeve obrade podupita i upita s grupiranjem.

po vrijednosti stupca Disciplina. Dobit ćemo 4 grupe za koje možemo izračunati neke grupne vrijednosti, kao što je broj torki u grupi, maksimalnu ili minimalnu vrijednost stupca Score. Tablica 5.7. Agregatne funkcije
Funkcija Proizlaziti
RAČUNATI Broj redaka ili vrijednosti nepraznih polja koje je odabrao upit
IZNOS Zbroj svih odabranih vrijednosti za ovo polje
PROSJ Aritmetička sredina svih odabranih vrijednosti za ovo polje
MIN Najmanja od svih odabranih vrijednosti za ovo polje
MAKS Najveća od svih odabranih vrijednosti za ovo polje
R1
Puno ime Disciplina Razred
Grupa 1 Petrov F.I. Baza podataka 5
Sidorov K. A. Baza podataka 4
Mironov A.V. Baza podataka 2
Stepanova K. E. Baza podataka 2
Krylova T. S. Baza podataka 5
Vladimirov V. A. Baza podataka 5
Grupa 2 Sidorov K. A. Teorija informacija 4
Stepanova K. E. Teorija informacija 2
Krylova T. S. Teorija informacija 5
Mironov A.V. Teorija informacija Null
Grupa 3 Trofimov P. A. Mreže i telekomunikacije 4
Ivanova E. A. Mreže i telekomunikacije 5
Utkina N.V. Mreže i telekomunikacije 5
Grupa 4 Vladimirov V. A. Engleski jezik 4
Trofimov P. A. Engleski jezik 5
Ivanova E. A. Engleski jezik 3
Petrov F.I. Engleski jezik 5

Agregatne funkcije koriste se slično nazivima polja u naredbi SELECT, ali s jednom iznimkom: uzimaju naziv polja kao argument. Mogu se koristiti samo funkcije SUM i AVG numerička polja. I numerička i znakovna polja mogu se koristiti s funkcijama COUNT, MAX i MIN. Kada se koriste sa znakovnim poljima, MAX i MIN će ih prevesti u ekvivalentni ASCII kod i obraditi ih u abecedni red. Neki DBMS-ovi dopuštaju korištenje ugniježđenih agregata, ali to je odstupanje od ANSI standarda sa svim posljedicama koje iz toga proizlaze.

Na primjer, možete izračunati broj studenata koji su polagali ispite iz svake discipline. Da biste to učinili, trebate pokrenuti upit grupiran po polju "Disciplina" i prikazati kao rezultat naziv discipline i broj redaka u grupi za ovu disciplinu. Korištenje znaka * kao argumenta funkciji COUNT znači prebrojavanje svih redaka u grupi.

SELECT R1.Disciplina, BROJ(*) OD R1 GRUPIRANO PO R1.Disciplina

Proizlaziti:

Ako želimo prebrojati broj ljudi koji su položili ispit u bilo kojoj disciplini, tada moramo isključiti nesigurne vrijednosti iz izvornog omjera prije grupiranja. U ovom slučaju zahtjev će izgledati ovako:

Dobijamo rezultat:

U ovom slučaju, linija sa studentom

Mironov A.V. Teorija informacija Null

neće pasti u skup torki prije grupiranja, tako da broj torki u grupi treba disciplinirati " Teorija informacija" bit će 1 manje.

Može se koristiti agregatne funkcije također bez operacije prethodnog grupiranja, u kojem slučaju se cijela relacija smatra jednom grupom i za ovu grupu se može izračunati jedna vrijednost po grupi.

Ponovno se okrećući bazi podataka “Session” (tablice R1, R2, R3), nalazimo broj uspješno položenih ispita:

Ovo se naravno razlikuje od odabira polja, jer se uvijek vraća jedna vrijednost, bez obzira koliko redaka ima u tablici. Argument agregatne funkcije mogu postojati odvojeni stupci tablice. Ali da bi se izračunala npr. količina različita značenja neki stupac u grupi, morate se prijaviti ključna riječ DISTINCT zajedno s nazivom stupca. Izračunajmo broj različitih ocjena dobivenih u svakoj disciplini:

Proizlaziti:

Rezultat može uključivati ​​vrijednost polja grupiranja i nekoliko njih agregatne funkcije, a u uvjetima grupiranja možete koristiti više polja. U ovom slučaju, grupe se formiraju na temelju skupa navedenih polja za grupiranje. Operacije agregatne funkcije mogu se primijeniti za spajanje više izvornih tablica. Na primjer, postavimo pitanje: odredimo za svaku grupu i svaku disciplinu broj studenata koji su uspješno položili ispit i prosječnu ocjenu iz discipline.

Proizlaziti:

Ne možemo koristiti agregatne funkcije u klauzuli WHERE jer se predikati vrednuju u smislu jednog retka, i agregatne funkcije- u smislu grupa linija.

Klauzula GROUP BY omogućuje vam da definirate podskup vrijednosti u određenom polju u smislu drugog polja i primijenite agregatnu funkciju na podskup. To omogućuje kombiniranje polja i agregatne funkcije u jednoj SELECT klauzuli. Agregatne funkcije može se koristiti i u izlaznom izrazu rezultata SELECT linije, a u izrazu uvjeta za obradu formirane skupine IMAJUĆI. U ovom slučaju, svaka agregatna funkcija se izračunava za svaku odabranu grupu. Vrijednosti dobivene iz izračuna agregatne funkcije, može se koristiti za prikaz odgovarajućih rezultata ili za uvjetovanje odabira grupa.

Napravimo upit koji prikazuje skupine u kojima je u jednoj disciplini na ispitima dobiveno više od jedne loše ocjene:

U budućnosti, kao primjer, nećemo raditi s bazom podataka “Session”, već s bazom podataka “Bank”, koja se sastoji od jedne tablice F, koja pohranjuje relaciju F koja sadrži informacije o računima u poslovnicama određene banke:

F = (N, puno ime, poslovnica, datum otvaranja, datum zatvaranja, stanje); Q = (Podružnica, grad);

budući da je na temelju toga moguće jasnije ilustrirati rad s agregatnim funkcijama i grupiranjem.

Na primjer, pretpostavimo da želimo pronaći ukupno stanje bankovnih računa. Možete napraviti zaseban upit za svaku od njih odabirom SUM(Balance) iz tablice za svaku granu. GROUP BY će vam, međutim, omogućiti da ih sve stavite u jednu naredbu:

SELECT Branch, SUM(Remaining) FROM F GROUP BY Branch;

Primjenjuje se GROUP BY agregatne funkcije neovisno za svaku grupu definiranu korištenjem vrijednosti polja Grana. Skupinu čine linije sa ista vrijednost Fields Branch, i

GROUP BY klauzula(SELECT naredbe) omogućuje grupiranje podataka (redaka) prema vrijednosti stupca ili nekoliko stupaca ili izraza. Rezultat će biti skup redaka sažetka.

Svaki stupac na popisu za odabir mora se pojaviti u klauzuli GROUP BY, uz jedinu iznimku konstanti i stupaca koji su operandi agregatnih funkcija.

Tablicu možete grupirati prema bilo kojoj kombinaciji njezinih stupaca.

Agregatne funkcije koriste se za dobivanje jedne ukupne vrijednosti iz grupe redaka. Sve agregatne funkcije izvode izračune na jednom argumentu, koji može biti ili stupac ili izraz. Rezultat svakog izračuna agregatne funkcije je konstantna vrijednost prikazana u zasebnom stupcu rezultata.

Skupne funkcije navedene su u popisu stupaca izjave SELECT, koja također može sadržavati klauzulu GROUP BY. Ako naredba SELECT nema klauzulu GROUP BY, a popis stupaca odabira sadrži barem, jednu agregatnu funkciju, tada ne bi trebala sadržavati jednostavne stupce. S druge strane, popis za odabir stupaca može sadržavati nazive stupaca koji nisu argumenti agregatne funkcije ako su ti stupci argumenti klauzule GROUP BY.

Ako upit sadrži klauzulu WHERE, tada agregatne funkcije izračunavaju vrijednost za rezultate odabira.

Agregatne funkcije MIN i MAX izračunati najmanji i najveća vrijednost stupac prema tome. Argumenti mogu biti brojevi, nizovi i datumi. svi NULL vrijednosti uklanjaju se prije izračuna (tj. ne uzimaju se u obzir).

Agregatna funkcija SUM izračunava ukupni zbroj vrijednosti stupca. Argumenti mogu biti samo brojevi. Korištenje parametra DISTINCT eliminira sve duplicirane vrijednosti u stupcu prije primjene funkcije SUM. Isto tako, sve NULL vrijednosti uklanjaju se prije primjene ove agregatne funkcije.

AVG agregatna funkcija vraća prosjek svih vrijednosti u stupcu. Argumenti također mogu biti samo brojevi, a sve NULL vrijednosti se uklanjaju prije procjene.

Agregatna funkcija COUNT ima dva različita oblika:

  • COUNT(col_name) - broji broj vrijednosti u stupcu col_name, NULL vrijednosti se ne uzimaju u obzir
  • COUNT(*) - broji broj redaka u tablici, također se uzimaju u obzir NULL vrijednosti

Ako upit koristi ključnu riječ DISTINCT, sve duplicirane vrijednosti u stupcu uklanjaju se prije upotrebe funkcije COUNT.

COUNT_BIG funkcija slično funkciji COUNT. Jedina razlika između njih je tip rezultata koji vraćaju: funkcija COUNT_BIG uvijek vraća vrijednosti tipa BIGINT, dok funkcija COUNT vraća vrijednosti podataka tipa INTEGER.

U IMAJU ponudu definira uvjet koji se primjenjuje na grupu redaka. Ima isto značenje za grupe redaka kao klauzula WHERE za sadržaj odgovarajuće tablice (WHERE se primjenjuje prije grupiranja, HAVING nakon).

Naučimo rezimirati. Ne, ovo nisu rezultati proučavanja SQL-a, već rezultati vrijednosti stupaca tablica baze podataka. SQL agregatne funkcije rade na vrijednostima stupaca kako bi proizvele jednu rezultirajuću vrijednost. Najčešće korištene SQL agregatne funkcije su SUM, MIN, MAX, AVG i COUNT. Potrebno je razlikovati dva slučaja korištenja agregatnih funkcija. Prvo, agregatne funkcije se koriste same i vraćaju jednu vrijednost rezultata. Drugo, agregatne funkcije se koriste s klauzulom SQL GROUP BY, odnosno grupiranjem po poljima (stupcima) kako bi se dobile rezultirajuće vrijednosti u svakoj grupi. Razmotrimo prvo slučajeve korištenja agregatnih funkcija bez grupiranja.

SQL funkcija SUM

SQL funkcija SUM vraća zbroj vrijednosti u stupcu tablice baze podataka. Može se primijeniti samo na stupce čije su vrijednosti brojevi. SQL upiti da biste dobili rezultirajući zbroj počnite ovako:

SELECT SUM(COLUMN_NAME) ...

Nakon ovog izraza slijedi FROM (TABLE_NAME), a zatim se uvjet može navesti korištenjem WHERE klauzule. Osim toga, nazivu stupca može prethoditi DISTINCT, što znači da samo jedinstvene vrijednosti. Prema zadanim postavkama, sve vrijednosti se uzimaju u obzir (za ovo možete posebno navesti ne DISTINCT, već ALL, ali riječ ALL nije potrebna).

Primjer 1. Postoji baza podataka poduzeća s podacima o njegovim odjelima i zaposlenicima. Uz sve ostalo, tablica Osoblje ima i stupac s podacima o plaćama zaposlenika. Odabir iz tablice izgleda ovako (za povećanje slike kliknite na nju lijevom tipkom miša):

Za dobivanje zbroja svih plaća koristite sljedeći upit:

ODABERITE SUM(Plaću) FROM osoblja

Ovaj će upit vratiti vrijednost 287664,63.

A sada . Na vježbama već počinjemo komplicirati zadatke, približavajući ih onima koji se susreću u praksi.

SQL MIN funkcija

Funkcija SQL MIN također radi na stupcima čije su vrijednosti brojevi i vraća najmanju vrijednost od svih vrijednosti u stupcu. Ova funkcija ima sintaksu sličnu onoj funkcije SUM.

Primjer 3. Baza podataka i tablica su iste kao u primjeru 1.

Treba znati minimum plaće zaposlenici odjela s brojem 42. Da biste to učinili, napišite sljedeći zahtjev:

Upit će vratiti vrijednost 10505,90.

I opet vježba za neovisna odluka . U ovoj i nekim drugim vježbama trebat će vam ne samo tablica Staff, već i tablica Org koja sadrži podatke o odjelima tvrtke:


Primjer 4. Tablica Org dodaje se tablici Staff koja sadrži podatke o odjelima tvrtke. Ispišite minimalni broj godina rada jednog zaposlenika u odjelu koji se nalazi u Bostonu.

SQL MAX funkcija

Funkcija SQL MAX radi slično i ima sličnu sintaksu koja se koristi kada trebate odrediti maksimalna vrijednost među svim vrijednostima stupaca.

Primjer 5.

Moramo saznati maksimalnu plaću zaposlenika odjela broj 42. Da bismo to učinili, pišemo sljedeći zahtjev:

Upit će vratiti vrijednost 18352,80

Vrijeme je vježbe za samostalno rješavanje.

Primjer 6. Opet radimo s dvije tablice - Staff i Org. Prikažite naziv odjela i najveću vrijednost provizije koju prima jedan zaposlenik u odjelu koji pripada skupini odjela (Division) Istočni. Koristiti JOIN (spajanje tablica) .

SQL AVG funkcija

Ono što je navedeno u vezi sa sintaksom za prethodno opisane funkcije vrijedi i za funkciju SQL AVG. Ova funkcija vraća prosjek svih vrijednosti u stupcu.

Primjer 7. Baza podataka i tablica su iste kao u prethodnim primjerima.

Pretpostavimo da želite saznati prosječnu duljinu radnog staža zaposlenika odjela broj 42. Da biste to učinili, napišite sljedeći upit:

Rezultat će biti 6,33

Primjer 8. Radimo za jednim stolom - Staff. Povući Prosječna plaća djelatnici s 4 do 6 godina iskustva.

SQL COUNT funkcija

SQL funkcija COUNT vraća broj zapisa u tablici baze podataka. Ako navedete SELECT COUNT(COLUMN_NAME) ... u upitu, rezultat će biti broj zapisa bez uzimanja u obzir onih zapisa u kojima je vrijednost stupca NULL (nedefinirano). Ako kao argument koristite zvjezdicu i započnete SELECT upit COUNT(*) ..., tada će rezultat biti broj svih zapisa (redova) tablice.

Primjer 9. Baza podataka i tablica su iste kao u prethodnim primjerima.

Želite znati broj svih zaposlenika koji primaju provizije. Broj zaposlenika čije vrijednosti stupca Comm nisu NULL bit će vraćen sljedećim upitom:

SELECT COUNT(Comm) FROM Staff

Rezultat će biti 11.

Primjer 10. Baza podataka i tablica su iste kao u prethodnim primjerima.

Ako želite saznati ukupan broj zapisa u tablici, upotrijebite upit sa zvjezdicom kao argument funkcije COUNT:

SELECT COUNT(*) FROM Staff

Rezultat će biti 17.

U sljedećem vježba za samostalno rješavanje morat ćete koristiti podupit.

Primjer 11. Radimo za jednim stolom - Staff. Prikaz broja zaposlenih u odjelu planiranja (Plains).

Skupne funkcije sa SQL GROUP BY

Pogledajmo sada korištenje agregatnih funkcija zajedno s SQL naredbom GROUP BY. Naredba SQL GROUP BY koristi se za grupiranje vrijednosti rezultata po stupcima u tablici baze podataka.

Primjer 12. Postoji baza podataka portala za oglase. Ima tablicu oglasa koja sadrži podatke o oglasima poslanim za tjedan. Stupac Kategorija sadrži podatke o velike kategorije oglasi (npr. Nekretnine), a stupac Dijelovi su manji dijelovi uključeni u kategorije (npr. dijelovi Apartmani i Vikendice su dijelovi kategorije Nekretnine). U stupcu Jedinice nalaze se podaci o broju zaprimljenih oglasa, a u stupcu Novac podaci o novčanom iznosu primljenom za podnošenje oglasa.

KategorijaDioJediniceNovac
PrijevozAutomobili110 17600
NekretninaApartmani89 18690
NekretninaDače57 11970
PrijevozMotocikli131 20960
Građevinski materijaliDaske68 7140
Elektrotehnikatelevizori127 8255
ElektrotehnikaHladnjaci137 8905
Građevinski materijaliRegips112 11760
Slobodno vrijemeknjige96 6240
NekretninaKod kuće47 9870
Slobodno vrijemeglazba, muzika117 7605
Slobodno vrijemeIgre41 2665

Pomoću SQL naredbe GROUP BY pronađite iznos novca zarađen objavljivanjem oglasa u svakoj kategoriji. Pišemo sljedeći zahtjev.

Najbolji članci na temu