SQL – Funkcija COUNT

SQL poseduje ugrađenu funkciju za prebrojavanje podataka (slogova, n-torki) unutar baza podataka. Ova funkcija je funkcija COUNT, koja kao rezultat vraća broj slogova koji zadovoljavaju određeni uslov. Kao argumente ove funkcije možete koristiti i džoker znake, gde se prvenstveno misli na zvezdicu („*“), te ako je upotrebite samostalno, funkcija će vratiti sve slogove koji zadovolje uslov naredbe SELECT. Sintaksa funkcije COUNT je sledeća:


SELECT COUNT(naziv_kolone)
FROM naziv_tabele;

Radi izvođenja primera, upotrebićemo sledeću tabelu „Radnik“:


Ime Starost
———————————–
Hadzic, Olga 34
Skoro, Milan 45
Petric, Karlo 19

Ako biste zadali upit sa funkcijom COUNT radi prebrojavanja svih radnika (upotrebićemo zvezdicu „*“), onda bi to ovako izgledalo:


SELECT COUNT(*)
FROM Radnik

Rezultat ovog upita bi bio „3“. A ako biste recimo želeli sa prebrojimo sve radnike koji su stariji od 20 godina, upit bi mogao ovako da izgleda:


SELECT COUNT(*)
FROM Radnik
WHERE Starost > 20;

Rezultat koji će vratiti upit je „2“. Treba znati i to da funkcija vraća samo broj onih slogova koji nemaju Null vrednost u navedenoj koloni (atributu). Postavimo da tabela-primer sada izgleda na drugačiji način:


Ime Starost
———————————–
Hadzic, Olga 34
Skoro, Milan 45
Petric, Karlo

Sada će upit:


SELECT COUNT(*)
FROM Radnik;

vratiti samo broj radnika koji u koloni „Starost“ imaju bar neku vrednost – rezultat će biti „2“. Zato je funkcija COUNT dobrodošla za potrebu pronalaženja slogova sa kolonama koje nemaju vrednosti.

Pored obične funkcije COUNT, možete kreirati i upite koji će sa ovom funkcijom upotrebljavati i ključnu reč DISTINCT, a, radi prebrojavanja različitih rezultata. Sintaksa ovakvog upita je sledeća:


SELECT DISTINCT COUNT(kolona(e))
FROM tabela;

Radi primera, kreiraćemo tabelu narudžbine, koja poseduje sledeće slogove:


Firma Br_narudz
—————————
Mega 3412
Kovac 2347
Trio 2328
Kovac 9998
—————————

„Obični“ upit izgledao bi ovako:


SELECT COUNT(Firma)
FROM Narudzbe;

Rezultat upita bi bio – „4“, prebrojale bi se sve firme u tabeli. A ako biste sada postavili sledeći upit:


SELECT DISTINCT COUNT(Firma)
FROM Narudzbe;

Rezultat upita bi bio „3“, jer će se prebrojati sve različite firme u tabeli, tj. neće se uzeti u obzir slogovi sa nazivima koji se ponavljaju. Inače, performanse izvođenja ove funkcije u radu sa velikim tabelama možete poboljšati ukoliko indeksirate kolone po kojima se vrši prebrojavanje.

Pratite Krstaricu na www.krstarica.com