You are on page 1of 14

Internet programiranje upiti

Cas 2(baza = test.sql):

ZA SPAJANJE TABELA

ALTER TABLE polaganje

ADD FOREIGN KEY

(Indeks) references

student (Indeks)

ALTER TABLE polaganje

ADD FOREIGN KEY

(id_predmeta) references

Predmet (id_predmeta)

STUDENTI KOJI SU PRIJAVILI PREDMET 2

SELECT s.ime,s.prezime

FROM polaganje AS p

JOIN student AS s

ON p.indeks=s.indeks

WHERE p.id_predmeta = 2\

IZDVOJITI SVE IDENTIFIKATORE PREDMETA KOJI SU POLAGALI NEKI


STUDENTI KOJI SU RODJENI U BL
SELECT distinct p.id_predmeta

FROM polaganje AS p

JOIN student AS s

ON p.indeks=s.indeks

WHERE s.mj_rodjenja = 'Banja Luka' distinct - za


izbjegavanje ponavljanja!

IZDVOJITI RAZLICITE NAZIVE PREDMETA KOJE SU POLAGALI


STUDENTI RODJENI POSLIJE 1992

SELECT DISTINCT pr.Nazivi

FROM polaganje AS p

JOIN student AS s ON p.indeks = s.indeks

JOIN predmet AS pr ON p.id_predmeta = pr.id_predmeta

WHERE s.dat_rodjenja > '1992-01-01'

IZDVOJITI SVE POLAGANE PREDMETE KOJI IMAJU VISE OD 5 BODOVA

SELECT DISTINCT pr.Nazivi

FROM polaganje AS p

JOIN predmet AS pr ON p.id_predmeta = pr.id_predmeta

WHERE pr.bodovi > 5

Cas 3:

1) tabela ispitni rok


SELECT *

FROM ispitni_rok

2) izdvojiti nazive ispitnih rokova u kojima je polozen predmet


programiranje 1

SELECT COUNT( DISTINCT (ir.naziv) ) AS BROJ

FROM ispit AS i

JOIN ispitni_rok AS ir ON i.godina_roka = ir.godina_roka

AND i.oznaka_roka = ir.oznaka_roka

JOIN predmet AS p ON i.id_predmeta = p.id_predmeta

WHERE i.ocena >5

imenovanje kolone 'as BROJ'

funkcija koja broji broj vrsta u koloni je 'COUNT'

3) Izdvojiti najveci broj bodova koji nosi neki predmet

SELECT MAX( p.bodovi )

FROM predmet AS p

funkcije MIN i MAX.

4) Izdvojiti naziv predmeta koji nosi najvise bodova


SELECT p.naziv AS PREDMET

FROM predmet AS p

WHERE p.bodovi = ( SELECT max( p.bodovi ) FROM predmet AS p )

5) izracunati trenutni prosjek ocjena studenta sa brojem indexa


20100026

SELECT indeks, AVG( i.ocena )

FROM ispit AS i

WHERE i.ocena >5

AND i.indeks =20100026

funkcija 'AVG' za srednju vrijednost

5a) i prikazati sa brojem polozenih predmeta

SELECT indeks, AVG( i.ocena ) , COUNT( DISTINCT (i.id_predmeta) ) AS


br_predmeta

FROM ispit AS i

WHERE i.ocena >5

AND i.indeks =20100026

5b) ispisati i ime i prezime ucenika


SELECT i.indeks, AVG( i.ocena ) , COUNT( DISTINCT (i.id_predmeta) ) AS
br_predmeta, d.ime, d.prezime

FROM ispit AS i

JOIN dosije AS d ON d.indeks = i.indeks

WHERE i.ocena >5

AND i.indeks =20100026

6) ispisati imena i prezimena svih studenata i sortirati rastuce po


prezimenu

SELECT d.ime, d.prezime

FROM dosije AS d

ORDER BY d.prezime ASC

uredjivanje u tabeli funkcija'ORDER BY', 'ASC' rastuce 'DESC' opadajuce

7) izracunati broj bodova koje je student sa brojem indexa 20100026


ostvario do sada

SELECT SUM( pr.bodovi )

FROM ispit AS i

JOIN predmet AS pr ON i.id_predmeta = pr.id_predmeta

WHERE i.ocena >5

AND i.indeks =20100026


funkcija 'SUM' sabiranje

Cas 4:

1) izdvojiti ime studenta i vjek u kom je rodjen.

SELECT ime, cast( god_rodjenja /100 +1 AS decimal( 0 ) ) AS vjek

FROM dosije

funkcija CASTOVANJE za konvertovanje tipa podatka

2)izdvojiti studente rodjene izmedju 1992 i 1994.

SELECT *

FROM dosije

WHERE god_rodjenja

BETWEEN 1992

AND 1994

2a)i koji nisu izmedju tih godina.

SELECT *

FROM dosije

WHERE god_rodjenja NOT

BETWEEN 1992
AND 1994

operator BETWEEN (npr Kolona1 between vrijednost1 and vrijednost 2)

3) Izdvojiti nazive svih rokova odrzanih u 2005, 2007 i 2011.

SELECT naziv

FROM ispitni_rok

WHERE godina_roka

IN ( 2005, 2007, 2011 )

3a) Izdvojiti rokovo koji nisu odrzani u ovim godinama.

SELECT naziv

FROM ispitni_rok

WHERE godina_roka

NOT IN ( 2005, 2007, 2011 )

operator IN (npr WHERE kolona1 IN (skup vrijednosti))

4) izdvojiti nazive predmeta koji u sebi sadrze slovo 'a'

SELECT naziv

FROM predmet
WHERE naziv LIKE '%a%'

4a) koja ne sadrze 'a'

SELECT naziv

FROM predmet

WHERE naziv NOT LIKE '%a%'

4b) Koja pocinju slovom 'p' i slovom 'a'

SELECT naziv

FROM predmet

WHERE naziv LIKE 'P%'

OR naziv LIKE 'A%'

4c) da je zadnje slovo 'a'

SELECT naziv

FROM predmet

WHERE naziv LIKE '%A'

4b) izdvojiti naziv predmeta koji na drugom mjestu imaju slovo 'A'

SELECT naziv

FROM predmet
WHERE naziv LIKE '_n%'

operator LIKE (kolona LIKE ('%a%')...\

5) Izdvojiti imena i prezimena studentaka cije ime je duze od tri


karaktera i pocinje slovom M.

SELECT Ime

FROM dosije

WHERE Ime LIKE 'M__%'

6) Izdvojiti imena i prezimena studenata cija godina rodjenja nije


poznata

SELECT Ime, Prezime

FROM dosije

WHERE god_rodjenja IS NULL

operator NULL kada nije poznato.

7)

SELECT *

FROM ispit

GROUP BY indeks
SELECT indeks, id_predmeta

FROM ispit

GROUP BY indeks

7a) izdvojiti borj polozenih ispita svih studenata.

SELECT indeks, count( DISTINCT (

id_predmeta

) ) AS br_predmeta

FROM ispit

WHERE ocena >5

GROUP BY indeks

7b) broj bodova koje su do sad ostvarili studenti.

SELECT d.ime, d.prezime, sum( bodovi )

FROM ispit AS i

JOIN predmet AS p ON i.id_predmeta = p.id_predmeta

JOIN dosije AS d ON d.indeks = i.indeks

WHERE ocena >5

GROUP BY d.indeks

7c) Izdvojiti studente koji su ostvarili manje od 20 bodova.


SELECT d.ime, d.prezime, sum( bodovi )

FROM ispit AS i

JOIN predmet AS p ON i.id_predmeta = p.id_predmeta

JOIN dosije AS d ON d.indeks = i.indeks

WHERE ocena >5

GROUP BY d.indeks

HAVING sum( bodovi ) <=20

operator GROUP BY Having ORDER BY LIMIT

8) Za svaki predmet izdvojiti koliko ga je studenata polozilo

SELECT p.naziv, count( i.indeks )

FROM ispit AS i

JOIN predmet AS p ON i.id_predmeta = p.id_predmeta

WHERE i.ocena >5

GROUP BY i.id_predmeta

Cas 5:

1) Izbrisati studenta sa brojem indeksa

DELETE FROM dosije WHERE indeks =20100055

2) Obrisati sve padove studenata


DELETE FROM ispit WHERE ocena =5

3) Obrisati sva polaganja predmeta Analiza 3

DELETE FROM ispit WHERE id_predmeta IN (

SELECT id_predmeta

FROM predmet

WHERE naziv = 'Analiza 3'

ili -

Delete from ispit as i where 'Analiza 3' = ( select naziv from predmet as p
where i.id_predmeta = p.id_predmeta) - NE RADI U OVOJ VERYIJI NE
DOZVOLJAVA IMENOVANJE U DELETEu

* ISPTNI ZADATAK

4) Obrisati sve studente koji nisu polagali nijedan ispit

DELETE FROM dosije WHERE dosije.indeks NOT IN (

SELECT indeks

FROM ispit

ili
DELETE FROM dosije WHERE indeks NOT IN (

SELECT indeks

FROM ispit

*ISPITNI ZADATAK

UPDATE <ime tabele>

SET K1=V1, K2=V2,...

[where uslov] - za mijenjanje

5) Promijeniti svima ime u Nikola

UPDATE dosije SET ime = 'Nikola'

6) Promijeniti ime nikoli vukovicu da je mjesto rodjenja sipovo

UPDATE dosije SET mesto_rodjenja = 'Sipovo' WHERE ime = 'Nikola' AND


prezime = 'Vukovic'

7) Duplirati broj bodova svim predmetima i vratiti

UPDATE predmet SET bodovi = bodovi *2

UPDATE predmet SET bodovi = bodovi /2

8) Izbrisati sva polaganja ispita u aprilskom roku 2011 da je ocijena


6 a polagao student Nikola Vukovic
*ISPITNI ZADATAK

9) Promijentiti sva polaganja predmeta Geometrija sa ocjene 6 na 8

*ISPITNI ZADATAK

UPDATE ispit SET ocena =8 WHERE id_predmeta IN (

SELECT id_predmeta

FROM predmet

WHERE naziv = 'Geometrija'

AND ocena =6

10)Za sva polaganja ispita u roku april 2011. promijeniti datum


polaganja ispita na datum posljednje polaganog ispita a ocjenu na 8:

*ISPITNI ZADATAK

Updata ispit set datum_ispita = ( select max (datum_ispita)from ispit), ocena


= 8 where godina_roka = 2011 and oznaka_roka = 'apr'

*NE RADI NE ZNAMO STO.

KOL 3.12. - JOIN, podupiti (IN, NOT IN), IDU, GRUP BY, ORDER BY, COUNT,
MIN, MAX, AVG, SUM

You might also like