Home > SQL > SQL Lekcija 11 – AGREGATE SQL FUNKCIJE I PREDIKAT

SQL Lekcija 11 – AGREGATE SQL FUNKCIJE I PREDIKAT

Prosinac 26th, 2008

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% [?]

SQL , , ,

  1. Trenutno nema komentara.
  1. No trackbacks yet.