Podupiti (Subquery) i operatori za rad sa više vrednosti
Completion requirements
1. Šta je podupit (subquery)?
Podupit je upit unutar drugog SQL upita.
Primer:
SELECT *
FROM Zaposleni
WHERE Plata >
(
SELECT AVG(Plata)
FROM Zaposleni
);
Unutrašnji upit:
SELECT AVG(Plata)
FROM Zaposleni
izračuna prosečnu platu.
Spoljašnji upit prikazuje zaposlene koji imaju veću platu od proseka.
2. Vrste podupita
Podupit može vratiti:
A) Jednu vrednost (single-row subquery)
Primer:
SELECT MAX(Plata)
FROM Zaposleni;
Vrati samo jednu vrednost.
Na primer:
95000
Tada možemo koristiti obične operatore:
=
>
<
>=
<=
<>
Primer:
WHERE Plata >
(
SELECT AVG(Plata)
FROM Zaposleni
)
B) Više vrednosti (multi-row subquery)
Primer:
SELECT Plata
FROM Zaposleni
WHERE OdeljenjeID = 2;
Može vratiti:
45000
52000
70000
Tada se ne mogu koristiti obični operatori poređenja.
Pogrešno:
WHERE Plata =
(
SELECT Plata
FROM Zaposleni
)
Jer postoji više rezultata.
3. Operator IN
Operator IN proverava da li vrednost pripada skupu rezultata.
Primer:
SELECT *
FROM UCENICI
WHERE RazredID IN
(
SELECT ID
FROM RAZRED
);
Značenje:
„Prikaži učenike čiji razred postoji u listi vraćenoj podupitom.”
4. Operator ANY
ANY znači:
bar jedna vrednost
Primer:
SELECT *
FROM Zaposleni
WHERE Plata > ANY
(
SELECT Plata
FROM Zaposleni
WHERE OdeljenjeID = 3
);
Značenje:
Plata mora biti veća od barem jedne plate.
5. Operator SOME
SOME je praktično isto što i ANY.
Primer:
WHERE Plata > SOME (...)
Radi isto kao:
WHERE Plata > ANY (...)
6. Operator ALL
ALL znači:
sve vrednosti
Primer:
SELECT *
FROM Zaposleni
WHERE Plata > ALL
(
SELECT Plata
FROM Zaposleni
WHERE OdeljenjeID = 2
);
Značenje:
Plata mora biti veća od svih plata iz podupita.
| Operator | Može sa više vrednosti? | Namena |
|---|---|---|
ALL |
✅ | poređenje sa svim vrednostima |
ANY |
✅ | poređenje sa bar jednom vrednošću |
SOME |
✅ | isto kao ANY |
IN |
✅ | provera da li pripada skupu |
|
||
Last modified: Tuesday, 9 June 2026, 8:41 AM