SQL Lekcija 11 – AGREGATE SQL FUNKCIJE I PREDIKAT
AGREGATE SQL FUNKCIJE I PREDIKAT
Ovdje cemo Vam, za pocetak, predstaviti nekoliko SQL funkcija bez kojih se SQL ne moze zamisliti. Prva na nasoj listi je komanda AVG.
AVG
AVG komanda, inace skracenica od engleske rijeci average = prosjek, izracunava srednju vrijednost jedne
kolumne koja se sastoji samo od brojeva.
Za nas primjer koristimo malo drugaciju tabelu nego inace – umjesto kolumne godiste imamo kolumnu KM
(=koliko je kilometara presao automobil):
Proizvodjac | Model | Boja | KM | Vlasnik |
VW | Golf GTI 2000 | Plava | 159456 | Ime1 Prezime1 |
Mercedes | 190 C | Siva | 12454 | Ime1 Prezime1 |
Ford | Sierra 2.0 | Crvane | 189818 | Ime2 Prezime2 |
Nasa komanda:
SELECT Vlasnik, AVG(KM) AS Prosjek
FROM Auto1
;
Prevod: Mi zelimo da vidimo koliko su km prosjecno presla vozila gore navedenih vlasnika.
I nas rezultat je:
Vlasnik | Prosjek |
Ime1 Prezime1 | 85955 |
Ime2 Prezime2 | 189818 |
Kao sto vidimo ukupni prosjek svih automobila osobe1 je 85955 –> (159456+12454)/2. Prosjek kod osobe2 je 189818, jer osoba2 samo jedan automobil ima.
SUM
Druga SQL funkcija u ovoj lekciji je SUM. SUM funkcija sabira sve vrijednosti jedne kolumne:
Nasa komanda:
SELECT Vlasnik, SUM(KM) AS Ukupno
FROM Auto1
WHERE Vlasnik = ‘Ime1 Prezime1′
;
Prevod: zelimo da sumiramo/saberemo sve kilometre koje su automobili osobe1 presli.
I nas rezultat je:
Vlasnik | Ukupno |
Ime1 Prezime1 | 171910 |
MIN, MAX
Sledeca fukncija u ovom nizu su MIN i MAX. MIN komanda selektira najmanju vrijednost jedne kolumne, a MAX najvise vrijednost. One rade na istom principu kao prethodne dvije:
SELECT MAX(KM)
FROM Auto1
;
Rezultat je 189818 jer je Ford presao najvise km.
SELECT MIN(KM)
FROM Auto1
;
Rezultat je 12454 jer je Mercedes presao najmanje km.
Nezaboravite da mozete sve ove funkcije kombinovati sa drugim komandama kao npr:
SELECT MAX(KM)
FROM Auto1
WHERE Vlasnik = ‘Ime1 Prezime1′
;
Pa ce rezultat biti 159456, jer automobil osobe1, VW presao vise km od Mercedesa istog vlasnika.
PREDIKATI
<NOT> LIKE
Prvi predikat, LIKE je vec objasnjen u 4. lekciji (WHERE), ali mi cemo to ovdje malo ponoviti i ovaj predikat malo prosiriti.
SELECT Proizvodjac
FROM Auto1
WHERE Proizvodjac LIKE ‘F%’
;
Rezultat:
Proizvodjac |
Ford |
U prevodu: … gdje ime poizvodjaca automobila pocinje sa F. Znak procenta ( % ), ima isto znacenje kao * u DOS-u.
Ako bi npr. zelili da Vam komanda pokaze sve proizvodjace u cijem se imenu nalazi slovo r, onda bi komanda izgledala ovako:
SELECT Proizvodjac
FROM Auto1
WHERE Proizvodjac LIKE ‘%r%’
;
Rezultat:
Proizvodjac |
Mercedes |
Ford |
Ova komanda se moze prosiriti veoma lako sa jednim dodatnim predikatom NOT, i primjena izgleda ovako:
SELECT Proizvodjac
FROM Auto1
WHERE Proizvodjac NOT LIKE ‘F%’
;
Rezultat:
Proizvodjac |
Mercedes |
VW |
Kao sto vidite, Ford se ne nalazi medju proizvodjacima jer njegovo ime pocinje sa F.
<NOT> IN
Ovaj predikat odredjuje da li se jedna vrijednost odnosno string slaze sa vise vrijednosti iz date liste tj. kolumne, i koristenje ovog predikata cemo objasniti na malo komplikovanijem primjeru koje smo Vam predstavili u prosloj lekciji, koristeci JOINS, odnosno jednostavni oblik JOINS-a:
SELECT Proizvodjac
FROM Auto1
WHERE Proizvodjac IN (SELECT Proizvodjac FROM Auto2)
;
Isto tako mozemo ubaciti pomocni izraz NOT za negiranje.
ALL, ANY
ALL = Rezultat je tacan ako se sve vrijednosti slazu
ANY = Minimalno jedna vrijednost se mora slagati
SELECT *
FROM Auto1
WHERE Proizvodjac = ALL (SELECT Proizvodjac FROM Auto2)
;
odnosno
SELECT *
FROM Auto1
WHERE Proizvodjac = ANY (SELECT Proizvodjac FROM Auto2)
;
Moze se reci da su ova dva predikata similarna sa komadnom IN:
= ANY " IN
<> ANY " NOT IN
<NOT> EXISTS
Sa predikatom EXISTS (i sa opcionalnim dodatim predikatom NOT) provjeravamo da li jedna selekcija uopste sadrzi podatke:
SELECT *
FROM Auto1
WHERE EXISTS (SELECT Proizvodjac FROM Auto2)
;
Sa ovim predikatom i sa dodatnim predikatom IF mozemo provjeriti da li npr. Neka tabela uopste postoji prije nego sto je pocnemo kreirati:
DROP TABLE IF EXISTS Auto23
;
CREATE TABLE
Popularity: 10% [?]
Najnoviji Komentari