1. Uvod

SQL ne služi samo za pretraživanje podataka, već i za njihovu obradu i računanje.
Kada radimo sa brojevima u tabelama, možemo da:

  • primenjujemo aritmetičke operacije (+, -, *, /),

  • kontrolišemo redosled izračunavanja pomoću zagrada,

  • koristimo ugrađene numeričke funkcije da dobijemo dodatne rezultate.


2. Aritmetičke operacije

Osnovne aritmetičke operacije su:

Operator Značenje Primer Rezultat
+ Sabiranje 10 + 5 15
- Oduzimanje 10 - 5 5
* Množenje 10 * 5 50
/ Deljenje 10 / 5 2
%* Ostatak pri deljenju (modulo)
    – podržava SQL Server, MySQL –
10 % 3 1

🔹 Napomena: Operator % nije uvek podržan u svim bazama podataka (npr. u Oracle-u se koristi MOD() funkcija).


3. Redosled izračunavanja 

Kao i u matematici, prioritet operatora je isti, a u nastavku su navedeni - počev od operatira sa najvišim prioritetom:

    1. Zagrade   (    )

    2. Stepenovanje (POWER) – ako baza podržava

    3. Množenje *, deljenje /, modulo %

    4. Sabiranje +, oduzimanje -

Primer:

SELECT 10 + 5 * 2;   -- Rezultat: 20 (prvo množenje)
SELECT (10 + 5) * 2; -- Rezultat: 30 (prvo zagrada)

4. Numeričke funkcije

SQL sadrži veliki broj funkcija za rad sa brojevima. Pored osnovnih aritmetičkih operacija (+, -, *, /), SQL ima i ugrađene numeričke funkcije.
One omogućavaju da se podaci obrade direktno u upitu, bez potrebe da se naknadno računa u aplikaciji. U nastavku su neke od najčešće korišćenih numeričkih funkcija:

Funkcija Opis Primer Rezultat
ABS(n)
Apsolutna vrednost ABS(-10) 10
CEILING(n)
Zaokruživanje naviše CEILING(4.2) 5
FLOOR(n)
Zaokruživanje naniže FLOOR(4.8) 4
ROUND(n,d) Zaokruživanje na d decimala ROUND(123.456, 2) 123.46
POWER(a,b) Stepenovanje (a^b) POWER(2,3) 8
SQRT(n)
Kvadratni koren SQRT(16) 4
LOG(n)
Prirodni logaritam (osnova e) LOG(10) 2.3025…
LOG10(n)
Dekadni logaritam (osnova 10) LOG10(100) 2
SIGN(n)
Znak broja (-1,0,1) SIGN(-15) -1
PI()
Vrednost broja π PI() 3.14159…
RAND()
Nasumičan broj (0–1) RAND() 0.7483…

Napomena: Postoji razlika između numeričkih i agregatnih funkcija (koje ćemo raditi kasnije):

    • Numeričke funkcije (kao što su ABS, ROUND, POWER, SQRT…) rade nad pojedinačnim vrednostima i vraćaju rezultat za svaku vrednost posebno.

    • Agregatne funkcije (SUM, AVG, MAX, MIN, COUNT) rade nad skupom redova i vraćaju jedan rezultat za taj skup, tj za sve te redove vraćaju samo jedan broj.


5. Primeri

Ako se oslonimo na prethodnu bazu koju smo kreirali sa tabelama Korisnici, Proizvodi, i Narudzbine, možemo koristiti numeričke funkcije da izvršimo razne operacije nad numeričkim podacima u tim tabelama.

Funkcija ROUND() se koristi za zaokruživanje broja na određeni broj decimala.

Primer:

Zaokruži cenu proizvoda na dve decimale.

SELECT ROUND(Cena, 2) AS ZaokruzenaCena
FROM Proizvodi;

Rezultat: Ovaj upit će vratiti cenu proizvoda sa samo dve decimale.

  • CEILING(): Vraća najmanji ceo broj koji je veći ili jednak vrednosti.

  • FLOOR(): Vraća najveći ceo broj koji je manji ili jednak vrednosti.

Primer:

  1. Zaokruži cenu na najbliži veći ceo broj:

    SELECT CEILING(Cena) AS CenaCeiling
    FROM Proizvodi;
    
  2. Zaokruži cenu na najbliži manji ceo broj:

    SELECT FLOOR(Cena) AS CenaFloor
    FROM Proizvodi;
    

Rezultat: Ovi upiti će zaokružiti cene proizvoda na najbliži veći i manji ceo broj, prema vrednosti u koloni Cena.

Funkcija ABS() vraća apsolutnu vrednost broja (odstranjuje negativni predznak).

Primer:

Ako je vrednost u nekoj koloni negativna, možemo izračunati njen apsolutni iznos. U ovom primeru ćemo samo koristiti ABS() na cenu proizvoda (ako bi vrednost bila negativna):

SELECT ABS(Cena) AS ApsolutnaCena
FROM Proizvodi;

Rezultat: Ovaj upit bi prikazao cenu proizvoda, bez obzira na to da li je negativna ili pozitivna (iako u realnim uslovima cena proizvoda neće biti negativna).

Funkcija POWER() se koristi za podizanje broja na određeni stepen.

Primer:

Računanje cene proizvoda podignute na kvadrat.

SELECT POWER(Cena, 2) AS CenaNaKvadrat
FROM Proizvodi;

Rezultat: Ovaj upit će prikazati kvadrat svake cene proizvoda u tabeli Proizvodi.

Funkcija PI() vraća vrednost broja Pi (≈ 3.14159). Može se koristiti u matematičkim proračunima.

Primer:

Računanje površine kruga na osnovu prečnika (koristeći formulu π * r^2):

SELECT PI() * POWER(5, 2) AS PovrsinaKruga;

Rezultat: Ovaj upit će izračunati površinu kruga sa radijusom 5 koristeći broj Pi.

Funkcija RAND() generiše slučajni broj između 0 i 1.

Primer:

Generisanje slučajnog broja za simulaciju popusta na proizvode:

SELECT Naziv, Cena, (Cena * RAND()) AS Popust
FROM Proizvodi;

Rezultat: Ovaj upit će generisati slučajni popust za svaki proizvod u tabeli Proizvodi.


5. Primeri koje nismo radili na času:

SQL upiti:

-- Povećanje cene za 20% (aritmetika)
SELECT Naziv, Cena, Cena * 1.2 AS NovaCena
FROM Proizvodi;

-- Apsolutna vrednost cena
SELECT Naziv, ABS(Cena) AS CenaPozitivna
FROM Proizvodi;

-- Zaokruživanje cene
SELECT Naziv, ROUND(Cena, 0) AS CenaCeoBroj
FROM Proizvodi;

-- Cena u kvadratu
SELECT Naziv, POWER(Cena, 2) AS KvadratCene
FROM Proizvodi;

6. Zadaci za vežbu
  1. Napisati upit koji svakoj ceni dodaje 10% poreza.

  2. Napisati upit koji računa apsolutnu vrednost cene i nazvati kolonu PozitivnaCena.

  3. Napisati upit koji izračunava kvadratni koren cene (za pozitivne cene).

  4. Prikazati naziv proizvoda i slučajan broj između 0 i 1 (koristiti RAND()).

  5. Prikazati cenu zaokruženu na dve decimale.

  6. Izračunati (Cena + 5) * 2 i uporediti rezultat sa (Cena + (5 * 2)).


7. Mini test (opciono)
  1. Koji je prioritet operacija: +, *, ()?

  2. Koja funkcija vraća apsolutnu vrednost broja?

  3. Razlika između CEILING() i FLOOR()?

  4. Šta vraća SIGN(-25)?

  5. Koja funkcija generiše slučajan broj između 0 i 1?


Last modified: Wednesday, 1 October 2025, 3:13 PM