{
"task": "Prikazati podatke o studentima i ispitima.",
"solution": "SELECT * FROM DA.DOSIJE, DA.ISPIT;"
}
Tabela ispita ima 119 144 reda, a tabela dosije ima 3 496 redova. Ovaj upit se izvršava oko 18 sekundi i daje 416 527 424 redova. Smanjenje tabela samo zbog ovog upita nema smisla. Ovaj zadatak se menja zadatkom identične ideje koji koristi dve manje tabele u bazi, studijski program (10 redova) i studentski status (16 reodva).
Novi zadatak:
{
"task": "Prikazati podatke o svim mogućim parovima studijskog programa i studentskih statusa. Prikazati naziv statusa i naziv programa.",
"solution": "SELECT SS.NAZIV, SP.NAZIV FROM DA.STUDIJSKIPROGRAM SP, DA.STUDENTSKISTATUS SS;",
"ordering": "1,2"
}
{
"task": "Izdvojiti parove studenata čija imena počinju na slovo M i za koje važi da su bar dva ista predmeta položili u istom ispitnom roku. Izdvojiti indekse studenata tako da prvi student ima manji indeks od drugog.",
"solution": "SELECT DISTINCT D1.INDEKS, D1.IME, D1.PREZIME, D2.INDEKS, D2.IME, D2.PREZIME FROM DA.DOSIJE D1 JOIN DA.DOSIJE D2 ON D1.IME LIKE 'M%' AND D2.IME LIKE 'M%' AND D1.INDEKS < D2.INDEKS JOIN DA.ISPIT I1 ON D1.INDEKS=I1.INDEKS AND I1.OCENA>5 AND I1.STATUS='o' JOIN DA.ISPIT I2 ON D2.INDEKS=I2.INDEKS AND I2.OCENA>5 AND I2.STATUS='o' AND I1.IDPREDMETA = I2.IDPREDMETA AND I1.OZNAKAROKA=I2.OZNAKAROKA AND I1.SKGODINA=I2.SKGODINA GROUP BY D1.INDEKS, D1.IME, D1.PREZIME, D2.INDEKS, D2.IME, D2.PREZIME HAVING COUNT(*)>=2;",
"ordering": "1,2"
}
Izvršavanje ovog upita traje oko 9 sekundi. Rešenje bez podupita se izvršava za oko 2 sekunde:
"solution": "SELECT DISTINCT D1.INDEKS, D1.IME, D1.PREZIME, D2.INDEKS, D2.IME, D2.PREZIME FROM DA.DOSIJE D1 JOIN DA.DOSIJE D2 ON D1.IME LIKE 'M%' AND D2.IME LIKE 'M%' AND D1.INDEKS < D2.INDEKS JOIN DA.ISPIT I1 ON D1.INDEKS=I1.INDEKS AND I1.OCENA>5 AND I1.STATUS='o' JOIN DA.ISPIT I2 ON D2.INDEKS=I2.INDEKS AND I2.OCENA>5 AND I2.STATUS='o' AND I1.IDPREDMETA = I2.IDPREDMETA AND I1.OZNAKAROKA=I2.OZNAKAROKA AND I1.SKGODINA=I2.SKGODINA GROUP BY D1.INDEKS, D1.IME, D1.PREZIME, D2.INDEKS, D2.IME, D2.PREZIME HAVING COUNT(*)>=2;",
Tabela ispita ima 119 144 reda, a tabela dosije ima 3 496 redova. Ovaj upit se izvršava oko 18 sekundi i daje 416 527 424 redova. Smanjenje tabela samo zbog ovog upita nema smisla. Ovaj zadatak se menja zadatkom identične ideje koji koristi dve manje tabele u bazi, studijski program (10 redova) i studentski status (16 reodva). Novi zadatak:
Izvršavanje ovog upita traje oko 9 sekundi. Rešenje bez podupita se izvršava za oko 2 sekunde: