Kako podesiti pametne telefone i računare. 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 radi na vrijednostima stupaca u više redova i vraća jednu vrijednost. Argumenti agregatnih funkcija mogu biti i stupci tabela i rezultati izraza nad njima. Agregatne funkcije mogu same biti uključene u druge aritmetičke izraze. Sljedeća tablica navodi najčešće korištene standardne unarne agregatne funkcije.


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

function_name([SVE | DISTINCT] izraz)

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

Agregatne funkcije se koriste u klauzulama SELECT i HAVING. Ovdje ćemo pogledati njihovu upotrebu u SELECT klauzuli. U ovom slučaju, izraz u argumentu funkcije primjenjuje se na sve redove ulazne tablice klauzule SELECT. Osim toga, ne možete koristiti i agregatne funkcije i stupce tablice (ili izraze s njima) u SELECT klauzuli u odsustvu GROUP BY klauzule, o čemu ćemo raspravljati u sljedeći odjeljak.

Funkcija COUNT ima dva formata. U prvom slučaju vraća se broj redova ulazne tablice, u drugom slučaju broj vrijednosti argumenata u ulaznoj tablici:

  • COUNT(*)
  • COUNT( izraz)

Najjednostavniji način korištenja ove funkcije je brojanje reda u tablici (sve ili zadovoljavajuće specificirano stanje). Za to se koristi prva varijanta sintakse.

Upit: Broj vrsta proizvoda, informacije o kojima su dostupne u bazi podataka.

SELECT COUNT(*) AS "Broj proizvoda"

IZ proizvoda

U drugoj varijanti sintakse funkcije COUNT, ime jedne kolone može se koristiti kao argument. U ovom slučaju, broji se ili sve vrijednosti u ovoj koloni ulazne tablice ili samo one koje se ne ponavljaju (kada se koristi ključna riječ DISTINCT).

Upit: Broj različitih imena sadržanih u tabeli Kupci.

ODABIR BROJ (DISTINCT FNAME)

OD kupca

Upotreba ostalih unarnih agregatnih funkcija je slična COUNT, osim što za funkcije MIN i MAX upotreba ključnih riječi DISTINCT i ALL nema smisla. Uz funkcije COUNT, MAX i MIN, pored 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)

OD

WHERE OrdDate"1.09.2010"

Zadatak za samostalan rad: Formulirajte uključeno SQL jezik dohvati zahtjeve za sljedeće podatke:

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

Da bi se sumirale informacije sadržane u bazi podataka, SQL pruža agregatne funkcije. Agregatna funkcija uzima cijeli stupac podataka kao argument i vraća jednu vrijednost koja na neki način sažima taj stupac.

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

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

ODABERITE 'PROSJEČNI PRIHODI=', AVG(SUMD)

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

– SUM() izračunava zbir svih vrijednosti sadržanih u koloni;

– AVG() izračunava prosek između vrednosti sadržanih u koloni;

– MIN() pronalazi najmanju među svim vrijednostima sadržanim 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 redova u tabeli rezultata upita.

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

ODABIR PROSJEČNOG (SUMD*0,13)

Ovaj upit kreira privremenu kolonu koja sadrži vrijednosti (SUMD*0,13) za svaki red u tabeli PERSON, a zatim izračunava prosjek privremene kolone.

Zbir prihoda svih stanovnika Zelenograda može se izračunati pomoću agregatne funkcije SUM:

ODABERITE ZUM(SUM) OD OSOBE

Agregatna funkcija se također može koristiti za izračunavanje ukupnih vrijednosti za tablicu rezultata dobivenu spajanjem nekoliko izvornih tablica. Na primjer, može se izračunati ukupan iznos prihodi koji građani primaju iz izvora pod nazivom "Stipendija":

ODABIR SUMA (NOVAC)

OD PROFITA, HAVE_D

WHERE PROFIT.ID=IMAM_D.ID

AND PROFIT.SOURCE='Stipendija'

Agregatne funkcije MIN() i MAX() omogućavaju vam da pronađete najmanju i najveću vrijednost u tabeli. Međutim, kolona može sadržavati numeričke ili nizove vrijednosti, ili vrijednosti datuma ili vremena.

Na primjer, možete definirati:

(a) najniži ukupan prihod koji primaju rezidenti i najveći porez koji se plaća:

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

(b) datume rođenja najstarijeg i najmlađeg stanara:

ODABIR MIN (DATUM), MAX (DATUM)

(c) prezimena, imena i patronimika prvih i najnovijih stanovnika na listi, poredani po abecednom redu:

ODABIR MIN(FIO), MAX(FIO)

Kada primjenjujete ove agregatne funkcije, morate imati na umu da se numerički podaci uspoređuju prema aritmetičkim pravilima, datumi se uspoređuju uzastopno (ranije vrijednosti datuma se smatraju manjim od kasnijih), vremenski intervali se uspoređuju na osnovu njihovog trajanja.

Koristeći MIN funkcije() i MAX() sa string podacima, rezultat poređenja dva stringa ovisi o korištenoj tablici kodiranja znakova.

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

(a) koliko stanova ima u 1. mikrookrugu?

ODABIR BROJ(ADR) IZ STANA GDJE ADR LIKE "%, 1_ _-%"

(b) koliko stanovnika ima izvore prihoda?

ODABIR BROJ (DISTINCT NOM) OD HAVE_D

(c) koliko izvora prihoda koriste stanovnici?

SELECT COUNT(DISTINCT ID) FROM HAVE_D (ključna riječ DISTINCT specificira da se vrijednosti koje se ne ponavljaju u koloni broje).

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

(a) koliko stanova ima u 2. mikrookrugu?

ODABIR BROJ(*) IZ STANA GDJE ADR LIKE "%, 2__-%"

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

SELECT COUNT(*) FROM PERSON, HAVE_D WHERE FIO="Ivanov Ivan Ivanovič" I PERSON.NOM=HAVE_D.NOM

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

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

Jedan od načina da se shvati kako se izvode zbirni upiti sa agregatnim funkcijama je da zamislite izvršenje upita kao podijeljeno na dva dijela. Prvo, utvrđuje se kako bi upit funkcionirao bez agregatnih funkcija, vraćajući više redova rezultata. Agregatne funkcije se zatim primjenjuju na rezultate upita, vraćajući jedan red sa sažetkom.

Na primjer, razmotrite sljedeći složeni upit: pronađite prosječan ukupni prihod po glavi stanovnika, zbir ukupnog prihoda stanovnika i prosječan prihod izvora kao procenat ukupnog prihoda stanovnika. Odgovor daje operater

ODABERITE AVG(SUMD), SUM(SUMD), (100*AVG(NOVAC/SUMD)) IZ OSOBE, PROFIT, HAVE_D GDJE PERSON.NOM=IMA_D.NOM I HAVE_D.ID=PROFIT.ID

Bez agregatnih funkcija, upit bi izgledao ovako:

ODABIR SUMD, SUMD, NOVAC/SUMD OD OSOBE, PROFIT, HAVE_D GDJE PERSON.NOM=IMA_D.NOM I HAVE_D.ID=PROFIT.ID

i vratio bi jedan red rezultata za svakog stanovnika i određeni izvor prihoda. Agregatne funkcije koriste stupce tabele rezultata upita da proizvedu tabelu u jednom redu sa zbirnim rezultatima.

Možete navesti agregatnu funkciju u vraćenom nizu stupaca umjesto imena bilo kojeg stupca. Na primjer, može biti dio izraza koji dodaje ili oduzima vrijednosti dvije agregatne funkcije:

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, ne možete koristiti agregatne funkcije i regularne nazive stupaca u isto vrijeme na listi vraćenih kolona, ​​jer to nema smisla, na primjer:

ODABERITE FIO, SUM(SUMD) OD OSOBE

Ovdje prvi element liste govori DBMS-u da kreira tabelu koja će se sastojati od nekoliko redova i sadržavati jedan red za svakog stanovnika. Drugi element liste traži od DBMS-a da vrati jednu vrijednost rezultata, koja je zbir vrijednosti u SUMD koloni. Ova dva smjera su u suprotnosti, što rezultira greškom.

Prethodno se ne odnosi na slučajeve obrade podupita i upita sa grupisanjem.

po vrijednosti stupca Disciplina . Dobit ćemo 4 grupe, za koje možemo izračunati neke grupne vrijednosti, kao što je broj torki u grupi, maksimalna ili minimalna vrijednost stupca Score. Tabela 5.7. Agregatne funkcije
Funkcija Rezultat
COUNT Broj redova ili vrijednosti polja koje nisu prazne koje je upit odabrao
SUMA Zbir svih odabranih vrijednosti datog polja
AVG Aritmetička sredina svih odabranih vrijednosti u datom polju
MIN Najmanja od svih odabranih vrijednosti za ovo polje
MAX Najveća od svih odabranih vrijednosti za ovo polje
R1
Puno ime Disciplina Ocjena
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 se koriste kao imena polja u SELECT izrazu, s jednim izuzetkom: uzimaju ime polja kao argument. Samo sa funkcijama SUM i AVG numerička polja. I numerička i karakterna polja mogu se koristiti sa funkcijama COUNT, MAX i MIN. Kada se koriste sa znakovnim poljima, MAX i MIN će ih prevesti u njihov ASCII ekvivalent i obraditi ih kao abecedni red. Neki DBMS dozvoljavaju ugniježđene agregate, ali ovo je odstupanje od ANSI standarda, sa svim njegovim implikacijama.

Na primjer, možete izračunati broj studenata koji su polagali ispite u svakoj disciplini. Da biste to učinili, potrebno je izvršiti upit grupiran po polju "Subject" i kao rezultat prikazati naziv discipline i broj redova u grupi za ovu disciplinu. Upotreba znaka * kao argumenta funkciji COUNT znači brojati sve redove u grupi.

ODABIR R1.Disciplina, COUNT(*) IZ R1 GRUPA PO R1.Disciplina

rezultat:

Ako želimo da izbrojimo broj studenata koji su položili ispit u bilo kojoj disciplini, onda moramo isključiti nulte vrijednosti iz originalnog omjera prije grupisanja. U ovom slučaju zahtjev će izgledati ovako:

Dobijamo rezultat:

U ovom slučaju, linija sa učenikom

Mironov A.V. Teorija informacija Null

neće pasti u skup torki prije grupisanja, tako da je broj torki u grupi za disciplinu " Teorija informacija" će biti 1 manje.

Može se primijeniti agregatne funkcije takođe bez operacije prethodnog grupisanja, u kom slučaju se cela relacija smatra jednom grupom i za ovu grupu se može izračunati jedna vrednost po grupi.

Ponovo se pozivajući na bazu podataka "Session" (tabele 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 na to koliko redova ima u tabeli. Argument agregatne funkcije mogu postojati odvojene kolone tabela. Ali da bi se izračunao, na primjer, broj različita značenja neku kolonu u grupi, morate se prijaviti ključna riječ DISTINCT zajedno s imenom stupca. Izračunajmo broj različitih ocjena dobijenih u svakoj disciplini:

rezultat:

Rezultat može uključivati ​​vrijednost polja za grupisanje i nekoliko agregatne funkcije, a više polja se mogu koristiti u uslovima grupisanja. U ovom slučaju, grupe se formiraju prema skupu specificiranih polja grupisanja. Agregatne operacije se mogu primijeniti za spajanje više izvornih tabela. Na primjer, postavimo pitanje: odredite za svaku grupu i svaku disciplinu broj onih koji su uspješno položili ispit i prosječan rezultat za disciplinu.

rezultat:

Ne možemo koristiti agregatne funkcije u klauzuli WHERE, jer se predikati procjenjuju u smislu jednog reda, i agregatne funkcije- u smislu grupa redova.

Klauzula GROUP BY vam omogućava da definirate podskup vrijednosti u određenom polju u smislu drugog polja i primijenite agregatnu funkciju na podskup. Ovo omogućava kombinovanje polja i agregatne funkcije u jednoj SELECT klauzuli. Agregatne funkcije može se koristiti kao u rezultatskom izlaznom izrazu SELECT redove, te u izrazu uvjeta obrade za formirane grupe IMAJUĆI . U ovom slučaju, svaka agregatna funkcija se izračunava za svaku odabranu grupu. Vrijednosti koje proizlaze iz proračuna agregatne funkcije, može se koristiti za prikaz odgovarajućih rezultata ili za uslovljavanje odabira grupa.

Napravimo upit koji prikazuje grupe u kojima je primljeno više od jedne dvojke u jednoj disciplini na ispitima:

Ubuduće, kao primjer, nećemo raditi sa bazom podataka "Session", već sa bazom podataka "Banka", koja se sastoji od jedne tabele F, koja pohranjuje relaciju F koja sadrži informacije o računima u filijalama određene banke:

F = (N, Puno ime, Filijala, Datum otvaranja, Datum zatvaranja, Stanje); Q = (Filijala, Grad);

jer je na ovoj osnovi moguće jasnije ilustrovati rad sa agregatnim funkcijama i grupisanjem.

Na primjer, pretpostavimo da želimo pronaći ukupno stanje računa u filijalama. Možete napraviti poseban upit za svaku od njih odabirom SUM(Stanje) iz tabele za svaku granu. GROUP BY će ih, međutim, sve staviti u jednu naredbu:

SELECT Ogranak, ZBIR (Stanje) FROM F GRUPA PO Ogranak;

GROUP BY se primjenjuje agregatne funkcije nezavisno za svaku grupu definisanu vrednošću polja Grana. Grupa se sastoji od linija sa istu vrijednost polja Filijala, i

GROUP BY ponuda(Izjava SELECT) vam omogućava grupiranje podataka (redova) prema vrijednosti stupca ili više stupaca ili izraza. Rezultat će biti skup sažetih redova.

Svaki stupac na listi odabira mora biti prisutan u klauzuli GROUP BY, osim za konstante i stupce koji su operandi agregatnih funkcija.

Tabela se može grupirati prema bilo kojoj kombinaciji svojih kolona.

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

Agregatne funkcije navedene su u listi stupaca izraza SELECT, koji također može sadržavati klauzulu GROUP BY. Ako nema GROUP BY klauzule u SELECT izrazu, a lista odabranih stupaca sadrži, by najmanje, jedna agregatna funkcija, onda ne bi trebao sadržavati jednostavne stupce. S druge strane, lista za odabir stupaca može sadržavati imena stupaca koja nisu argumenti agregatnoj funkciji 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čunajte najmanji i najveća vrijednost kolone respektivno. Argumenti mogu biti brojevi, nizovi i datumi. Sve NULL vrijednosti se uklanjaju prije obračuna (tj. ne uzimaju se u obzir).

Agregatna funkcija SUM izračunava ukupan zbir vrijednosti stupca. Argumenti mogu biti samo brojevi. Korištenje opcije DISTINCT eliminira sve duple vrijednosti u stupcu prije primjene funkcije SUM. Slično, sve NULL vrijednosti se uklanjaju prije primjene ove agregatne funkcije.

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

Agregatna funkcija COUNT ima dva različita oblika:

  • COUNT( col_name) - broji broj vrijednosti u koloni Col_name, NULL vrijednosti se zanemaruju
  • COUNT(*) - broji broj redova u tabeli, uzimaju se u obzir i NULL vrijednosti

Ako se u upitu koristi ključna riječ DISTINCT, sve duplicirane vrijednosti stupaca se uklanjaju prije nego što se primijeni funkcija 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 BIGINT vrijednosti, dok funkcija COUNT vraća INTEGER vrijednosti podataka.

AT HAVING ponudu definira uvjet koji se primjenjuje na grupu redova. Ima isto značenje za grupe redova kao klauzula WHERE za sadržaj odgovarajuće tabele (WHERE se primenjuje pre grupisanja, HAVING posle).

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

SQL SUM funkcija

SQL SUM funkcija vraća zbroj vrijednosti stupca u tablici baze podataka. Može se primijeniti samo na stupce čije su vrijednosti brojevi. SQL upiti da dobijete rezultujuću sumu, počnite ovako:

ODABIR ZBIR (NAZIV STUPCA) ...

Nakon ovog izraza slijedi FROM (TABLE_NAME), a zatim se uvjet može specificirati pomoću klauzule WHERE. Također, DISTINCT može imati prefiks za ime kolone, što znači samo to jedinstvene vrijednosti. Prema zadanim postavkama, sve vrijednosti se uzimaju u obzir (za to možete posebno navesti ne DISTINCT, već SVE, ali riječ SVE je opcionalna).

Primjer 1 Postoji baza podataka kompanije sa podacima o njenim odeljenjima i zaposlenima. Tabela Osoblje takođe ima kolonu sa podacima o platama zaposlenih. Izbor iz tabele ima sledeći oblik (za uvećanje slike kliknite na nju levim tasterom miša):

Da biste dobili zbir svih plata, koristite sljedeći upit:

ODABERITE SUMU (Platu) OD osoblja

Ovaj upit će vratiti vrijednost 287664.63.

I sada . U vježbama već počinjemo da komplikujemo zadatke, približavajući ih onima koji se susreću u praksi.

SQL MIN funkcija

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

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

Morate znati minimum plate zaposleni u odjeljenju broj 42. Za to napišite sljedeći zahtjev:

Upit će vratiti vrijednost 10505.90.

I opet vježba za nezavisna odluka . U ovoj i nekim drugim vježbama biće vam potrebna ne samo tabela osoblja, već i tabela organizacije koja sadrži podatke o odjelima kompanije:


Primjer 4 Tabela Org se dodaje tabeli osoblja, koja sadrži podatke o divizijama kompanije. Navedite minimalni broj godina koje je jedan zaposlenik radio u odjelu koji se nalazi u Bostonu.

SQL MAX funkcija

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

Primjer 5

Potrebno je saznati maksimalnu platu zaposlenih u odjeljenju broj 42. Da biste to učinili, napišite sljedeći upit:

Upit će vratiti vrijednost 18352.80

Sada je vrijeme vježbe za samoopredjeljenje.

Primjer 6 Opet radimo sa dva stola - Staff i Org. Prikaz naziva odjeljenja i maksimalnog iznosa provizija koje primi jedan zaposlenik u odjelu koji pripada grupi odjela (Odjeljenje) Istočni. Koristi JOIN (spajanje tablica) .

SQL AVG funkcija

Ono što je rečeno o sintaksi za prethodno opisane funkcije važi i za SQL AVG funkciju. Ova funkcija vraća prosjek svih vrijednosti u stupcu.

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

Neka je potrebno saznati prosječan radni staž radnika odjeljenja broj 42. Da bismo to učinili, pišemo sljedeći upit:

Rezultat će biti 6,33

Primjer 8 Radimo sa jednim stolom - Osoblje. Povuci se prosečna plata zaposleni sa 4 do 6 godina iskustva.

SQL COUNT funkcija

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

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

Želite znati broj svih zaposlenih koji primaju provizije. Broj zaposlenih čije vrijednosti Comm kolone nisu NULL će vratiti sljedeći upit:

SELECT COUNT(Comm) OD osoblja

Rezultat će biti vrijednost 11.

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

Ako želite znati ukupan broj zapisa u tablici, onda koristite upit sa zvjezdicom kao argument funkciji COUNT:

SELECT COUNT(*) OD osoblja

Rezultat će biti vrijednost 17.

Sljedeći vježba za samoopredjeljenje morate koristiti potupit.

Primjer 11. Radimo sa jednim stolom - Osoblje. Prikažite broj zaposlenih u odjelu Plains.

Agregatne funkcije sa SQL GROUP BY

Pogledajmo sada korištenje agregatnih funkcija zajedno sa SQL GROUP BY klauzulom. SQL GROUP BY klauzula se koristi za grupiranje rezultirajućih vrijednosti po stupcima u tablici baze podataka.

Primjer 12. Postoji baza podataka portala oglasa. Ima tablicu Oglasi koja sadrži podatke o oglasima koji su poslani za sedmicu. Stupac Kategorija sadrži informacije o velike kategorije oglasi (npr. Nekretnine), te kolona Dijelovi - o manjim dijelovima koji su uključeni u kategoriju (npr. dijelovi Apartmani i vikendice su dijelovi kategorije Nekretnine). Kolona Jedinice sadrži podatke o broju dostavljenih oglasa, a kolona Novac iznos novca zarađen za slanje oglasa.

KategorijadioJediniceNovac
Transportmotorna vozila110 17600
NekretninaApartmani89 18690
NekretninaDachas57 11970
TransportMotocikli131 20960
građevinski materijalPloče68 7140
elektrotehniketelevizori127 8255
elektrotehnikeFrižideri137 8905
građevinski materijalRegips112 11760
Slobodno vrijemeKnjige96 6240
NekretninaKuće47 9870
Slobodno vrijemeMuzika117 7605
Slobodno vrijemeIgre41 2665

Koristeći klauzulu SQL GROUP BY, pronađite količinu novca generiranu slanjem oglasa u svakoj kategoriji. Pišemo sljedeći zahtjev.

Top Related Articles