-- broj studenata, min ime, max indeks SELECT COUNT(*) as br_studenata, MIN(ime) as najmanje_ime, MAX(indeks) as max_indeks FROM dosije; -- ne brojimo NULL - za neki atribut ili ako zelimo da brojimo raz vrednosti: SELECT COUNT(*) as br_studenata, COUNT(datdiplomiranja), COUNT(DISTINCT mestorodjenja) FROM dosije; -- koliko ima razlicitih pozitivnih ocena u bazi SELECT COUNT(DISTINCT NULLIF(ocena, 5)) FROM ispit; -- izdvojimo br indeks i bro espb poena koji su polozili za studenata koji su izasli na ispit SELECT i.indeks, SUM(p.espb) FROM ispit i JOIN predmet p ON i.idpredmeta = p.id WHERE i.ocena > 5 AND i.status = 'o' GROUP BY i.indeks; -- za studente koji su sakupili bar 20 espb -- izdvojimo ukupan broj espb koji su osvojili SELECT i.indeks, SUM(p.espb) br_polozenih_espb FROM ispit i JOIN predmet p ON i.idpredmeta = p.id WHERE i.ocena > 5 AND i.status = 'o' GROUP BY i.indeks HAVING SUM(p.espb) > 20 ORDER BY 2; -- izdvojiti ime, prezime, indeks i broj espb koji su studenti polozili SELECT i.indeks, d.ime, d.prezime, SUM(p.espb) FROM ispit i JOIN predmet p ON i.idpredmeta = p.id JOIN dosije d on i.indeks = d.indeks WHERE i.ocena > 5 AND i.status = 'o' GROUP BY i.indeks, d.ime, d.prezime; -- izdvojiti proseke studenata SELECT d.indeks, d.ime, d.prezime, AVG(ocena + 0.0) FROM ispit i RIGHT JOIN dosije d ON i.indeks = d.indeks AND i.ocena > 5 AND i.status = 'o' GROUP BY d.indeks, d.ime, d.prezime; -- za svaki od ispitnih rokova i za svaki polagani predmet u tom roku -- odrediti broj uspesnih polaganja (uzimati samo rokove i predmete koji postoje u tabeli ispit) SELECT i.skgodina, i.oznakaroka, i.idpredmeta, COUNT(*) FROM ispit i WHERE ocena > 5 AND status = 'o' GROUP BY i.skgodina, i.oznakaroka, i.idpredmeta ORDER BY 1, 2, 3; -- za svaki predmet treba izracunati koliko je studenata polozilo taj predmet SELECT p.id, p.oznaka, SUM(CASE WHEN i.idpredmeta IS NOT NULL THEN 1 ELSE 0 END) FROM predmet p LEFT JOIN ispit i ON p.id = i.idpredmeta AND i.ocena > 5 AND i.status = 'o' GROUP BY p.id, p.oznaka ORDER BY 1, 2; SELECT p.id, p.oznaka, (SELECT COUNT(*) FROM ispit i WHERE i.ocena > 5 AND i.status ='o' AND i.idpredmeta = p.id) FROM predmet p ORDER BY 1, 2; -- izdvojiti indeks, ime, prezime studenata koji su polozili bar 3 predmeta SELECT d.indeks, d.ime, d.prezime, COUNT(*) FROM dosije d JOIN ispit i ON d.indeks = i.indeks WHERE i.ocena > 5 AND i.status = 'o' GROUP BY d.indeks, d.ime, d.prezime HAVING COUNT(*) >= 3; -- izdvoijit indeks tudenata koji su polozili bar 3 predmeta -- i id predmeta koji su polozili 3 studenta.. SELECT i.indeks as id FROM ispit i WHERE i.ocena > 5 AND i.status = 'o' GROUP BY i.indeks HAVING COUNT(*) >= 3 UNION SELECT i.idpredmeta as id FROM ispit i WHERE i.ocena > 5 AND i.status = 'o' GROUP BY i.idpredmeta HAVING COUNT(*) >= 3 ORDER BY 1 DESC; -- za sve studente koji su polagali neki ispit -- izdvojiti koliko su dobili osmica i koliko su dobili devetki SELECT d.indeks, (SELECT COUNT (*) FROM ispit i2 WHERE i2.indeks = d.indeks AND i2.ocena = 8 AND i2.status = 'o') "BROJ OSMICA", (SELECT COUNT (*) FROM ispit i2 WHERE i2.indeks = d.indeks AND i2.ocena = 9 AND i2.status = 'o') "BROJ DEVETKI" FROM dosije d WHERE EXISTS(SELECT * FROM ispit i WHERE i.indeks = d.indeks); SELECT i.indeks, SUM(CASE ocena WHEN 8 THEN 1 ELSE 0 END) AS osmice , SUM(CASE ocena WHEN 9 THEN 1 ELSE 0 END) AS devetke, SUM( CASE COALESCE(ocena, 5) WHEN 5 THEN 1 ELSE 0 END ) as padanja FROM ispit i GROUP BY i.indeks; -- za predmet koji je prvi polagan na fakultetu -- izdvojiti oznaku predmeta, ime i prezime studenata koji su ga ikada upisali SELECT p.oznaka, d.ime, d.prezime FROM predmet p, dosije d WHERE EXISTS(SELECT * FROM uspisankurs k WHERE k.idpredmeta = p.id AND k.indeks = d.indeks) AND EXISTS(SELECT * FROM ispit i WHERE i.idpredmeta = p.id AND NOT EXISTS(SELECT * FROM ispit i2 WHERE i.datpolaganja > i2.datpolaganja))