You are on page 1of 8

Upiti 6

1. Приказати укупан број оправданих изостанака које је направио ученик са


идентификатором 1 (колону назвати broj_izostanaka).
select count(*) as broj_izostanaka
from izostanak
where status="оправдан" and id_ucenik=1

2. Приказати просечну оцену, заокружену на две децимале, на писменом задатку из


математике у првом разреду одржаном 15. октобра 2020. године (математика у
првом разреду има идентификатор 1).
select round(avg(ocena),2) as prosek
from ocena
where id_predmet=1 and vrsta="писмени задатак" and datum="2020-10-15"

3. За сваки датум у ком је направљен неки изостанак одредити укупан број


направљених изостанака (колону назвати broj_izostanaka).
select datum, count(*) as broj_izostanaka
from izostanak
group by datum

4. За сваки статус изостанака (оправдани, неоправдани, нерегулисани) одредити број


таквих изостанака у мају 2021. године.
select status, count(*) as broj_izostanaka
from izostanak
where datum between "2021-05-01" and "2021-05-31"
group by status

5. За сваки статус изостанака одреди први и последњи датум када је такав изостанак
направљен (колоне назвати prvi и poslednji).
select status, min(datum) as prvi, max(datum) as poslednji
from izostanak
group by status

6. За сваки месец приказати број ученика рођених у том месецу (колоне


назвати mesec и broj).
select strftime("%m",datum_rodjenja) as mesec, count(*) as broj
from ucenik
group by strftime("%m",datum_rodjenja)
7. За сваки месец у години y ком је неки ученик добио неку јединицу - приказати број
јединица које су ученици добили током тог месеца (колоне назвати mesec и broj).
select strftime("%m",datum) as mesec, count(*) as broj
from ocena
where ocena=1
group by strftime("%m",datum)

8. Прикажи датуме у којима има неоправданих изостанака, али да је то строго мање од


10 (уз сваки датум приказати и број изостанака).
select datum, count(*) as broj
from izostanak
where status="неоправдан"
group by datum
having broj<10

9. Приказати све називе предмета који се предају током неколико разреда (приказати
само називе).
select naziv
from predmet
group by naziv
having count(naziv)>1
Upiti 7
1. За сваки изостанак начињен 14. маја 2021. године, приказати име и презиме
ученика, редни број часа и статус изостанка.
select ime,prezime,cas,status
from ucenik u
join izostanak i on id_ucenik=u.id
where datum="2021-05-14"

2. Приказати све оцене из математике за први разред у читљивом формату (тако да се


виде име и презиме ученика и назив предмета).
select p.naziv, u.ime, u.prezime, o.ocena, o.datum, o.vrsta
from ocena o
join predmet p on o.id_predmet=p.id
join ucenik u on o.id_ucenik=u.id
where p.naziv="Математика" and p.razred=1

3. Приказати све оцене на писменим задацима из предмета првог разреда у читљивом


формату.
select p.naziv, u.ime, u.prezime, o.ocena, o.datum, o.vrsta
from ocena o
join predmet p on o.id_predmet=p.id
join ucenik u on o.id_ucenik=u.id
where o.vrsta="писмени задатак" and p.razred=1

4. Приказати све парове близанаца (под близанцима ћемо подразумевати све парове
ученика који се исто презивају и имају исти датум рођења).
select u1.ime as ime1,u2.ime as ime2, u1.prezime
from ucenik u1
join ucenik u2 on u1.datum_rodjenja=u2.datum_rodjenja and
u1.prezime=u2.prezime
where u1.id<u2.id

5. Приказати све регулисане изостанке у читљивом формату (у ком се види име и


презиме ученика и датум, час и статус изостанка).
select ime,prezime,datum,cas,status
from izostanak i
join ucenik u on i.id_ucenik=u.id
where status!="нерегулисан"

6. За сваког ученика приказати списак предмета које похађа (свака врста треба да
садржи име и презиме ученика, разред и одељење у које иде и назив једног
предмета).
select u.ime,u.prezime,u.razred, u.odeljenje,p.naziv
from ucenik u
join predmet p on u.razred=p.razred
Upiti 8
1. За сваки изостанак начињен 14. маја 2021. године, приказати име и презиме
ученика, редни број часа и статус изостанка. Користити имлицитно спајање.
select *
from izostanak, ucenik
where izostanak.id_ucenik=ucenik.id and datum="2021-05-14"

2. Приказати све могуће парове ученика на основу оцена које су добили на писменом
задатку из математике у првом разреду дана 15. октобра 2020. године.
select u1.ime||" "||u1.prezime as ime_i_prezime1,o1.ocena as ocena1, u2.ime||" "||
u2.prezime as ime_i_prezime2,o2.ocena as ocena2
from ucenik as u1, ucenik as u2, ocena as o1, ocena as o2
where o1.id_ucenik=u1.id and o2.id_ucenik=u2.id and o1.id_predmet=1 and
o1.datum="2020-10-15" and o2.id_predmet=1 and o2.datum="2020-10-15" and
u1.id!=u2.id

3. Приказати све регулисане изостанке у читљивом формату (у ком се види име и


презиме ученика и датум, час и статус изостанка), али тако да упит користи
имплицитно, а не експлицитно спајање.
select u.ime,u.prezime,i.datum,i.cas,i.status
from izostanak i, ucenik u
where u.id=i.id_ucenik and status!="нерегулисан"
Upiti 9
1. Приказати просечне оцене из свих предмета из првог разреда.
select p.naziv,round(avg(o.ocena),2) as prosek
from ocena o
join predmet p on o.id_predmet=p.id
where p.razred=1
group by o.id_predmet

2. Приказати просечне оцене из свих предмета (уређене опадајуће по просечној


оцени).
select p.naziv,round(avg(o.ocena),2) as prosek
from ocena o
join predmet p on o.id_predmet=p.id
group by o.id_predmet
order by prosek desc

3. Приказати називе предмета и просечне оцене на писменим задацима за све


предмете код којих је просечна оцена на писменим задацима бар 3,50.
select p.naziv,round(avg(o.ocena),2) as prosek
from ocena o
join predmet p on o.id_predmet=p.id
where o.vrsta="писмени задатак"
group by o.id_predmet
having prosek>=3.5

4. За свако одељење приказати укупан број неоправданих изостанака.


select razred,odeljenje,count(*) as ukupno_izostanaka
from izostanak
join ucenik on izostanak.id_ucenik=ucenik.id
where status=”неоправдан”
group by razred,odeljenje

5. Приказати просечну оцену (заокружено на две децимале) из математике за свако


одељење.
select predmet.razred,odeljenje,round(avg(ocena),2) as prosek
from ocena
join predmet on ocena.id_predmet=predmet.id
join ucenik on ocena.id_ucenik=ucenik.id
where predmet.naziv="Математика"
group by ucenik.razred,odeljenje
Upiti 10
1. Prikazati sve podatke o izostancima učenika uključujući i učenike koji nemaju izostanke.
select *
from ucenik u
left join izostanak i on u.id=i.id_ucenik

II način:
select *
from izostanak i
right join ucenik u on u.id=i.id_ucenik

2. Приказати укупан број изостанака за сваког ученика (укључујући и оне ученике


који немају изостанака). Списак уредити опадајуће по укупном броју изостанака.
select ime,prezime,count(*) as broj_izostanaka
from ucenik u
left join izostanak i on u.id=i.id_ucenik
group by u.id
order by broj_izostanaka desc

3. Приказати број неоправданих изостанака за сваког ученика одељења I2 (укључујући


и оне ученике који немају неоправданих изостанака). Списак уредити опадајуће по
броју неоправданих изостанака.
select u.id,u.ime,u.prezime,u.razred,u.odeljenje,count(status) as
broj_neopravdanih
from ucenik u left join
izostanak i on u.id=i.id_ucenik and status="неоправдан"
where razred=1 and odeljenje=2
group by u.id
order by broj_neopravdanih desc

4. За сваког ученика приказати просек свих уписаних оцена. Табела треба да прикаже
имена, презимена и просечне оцене свих ученика заокружене на две децимале (код
оних који немају ниједну уписану оцену уместо просечне оцене треба да буде
уписана недостајућа вредност).
select ime,prezime,round(avg(o.ocena),2)
from ucenik u
left join ocena o on u.id=o.id_ucenik
group by u.id
Upiti 11
1. Приказати у читљивом формату све оцене на контролним вежбама ученика
одељења I2. Приказати име и презиме ученика, назив предмета, датум добијања
оцене и оцену која је добијена.
select ime,prezime,naziv,datum,ocena
from ocena o
join ucenik u on o.id_ucenik=u.id
join predmet p on o.id_predmet=p.id
where o.vrsta="контролна вежба" and u.razred=1 and u.odeljenje=2

2. Приказати просечну оцену на сваком писменом задатку у сваком одељењу


(рачунати само писмене задатке које је истовремено радило бар 25 ученика).
Приказати разред, одељење, назив предмета, датум писменог, просечну оцену и
број ученика који су радили писмени.
select u.razred,u.odeljenje,naziv,datum,round(avg(ocena),2) as
prosek,count(ocena) as broj
from ocena o
join ucenik u on o.id_ucenik=u.id
join predmet p on o.id_predmet=p.id
where o.vrsta="писмени задатак"
group by u.razred,u.odeljenje,datum

3. За сваки предмет приказати месечни преглед броја петица (списак уредити по


називима предмета у азбучном редоследу, а за сваки предмет, по месецима,
растуће). Приказати назив предмета, разред, месец и број петица.
select naziv,p.razred, strftime("%m",datum) as mesec,count(*) as broj_petica
from ocena o
join ucenik u on o.id_ucenik=u.id
join predmet p on o.id_predmet=p.id
where o.ocena=5
group by o.id_predmet, mesec
order by naziv asc,mesec asc

4. Ситуација је алармантна када ученици неког одељења у неком месецу направе 5


или више неоправданих изостанака. Приказати све такве случајеве. Приказати
разред, одељење, месец и број неоправданих изостанака.
select u.razred,u.odeljenje,strftime("%m",datum) as mesec, count(*) as
broj_neopravdanih
from izostanak i
join ucenik u on i.id_ucenik=u.id
where i.status="неоправдан"
group by u.razred,u.odeljenje,mesec
having broj_neopravdanih>=5
5. За сваког ученика приказати просечну оцену из сваког предмета за који је добио бар
две оцене (приказати имена и презимена ученика, називе предмета и просечне
оцене заокружене на две децимале).
select u.ime,u.prezime,naziv,round(avg(ocena),2) as prosek
from ocena o
join ucenik u on o.id_ucenik=u.id
join predmet p on o.id_predmet=p.id
group by u.id, p.id
having count(ocena)>=2

6. Рођендански парадокс нам говори да је у одељењу од 23 ученика вероватноћа да


два ученика имају исти датум рођења скоро 50%. Зато се може очекивати да у
већини одељења постоји бар два ученика рођена истог датума. Исписати све парове
ученика из истог одељења рођених истог дана. Приказати датум, разред, одељење,
имена и презимена оба ученика.
select u1.datum_rodjenja,u1.razred,u1.odeljenje,u1.ime,u1.prezime, u2.ime,
u2.prezime
from ucenik as u1
join ucenik as u2 on u1.razred=u2.razred and u1.odeljenje=u2.odeljenje
and u1.datum_rodjenja=u2.datum_rodjenja
where u1.id<u2.id
order by u1.razred,u1.odeljenje

7. Приказати број оцена из сваког предмета, укључујући и оне предмете из којих не


постоји ни једна оцена. Резултат сортирати опадајуће по броју оцена. Приказати
назив предмета, разред и број оцена.
select naziv,razred,count(*) as broj
from predmet p
left join ocena o on p.id=o.id_predmet
group by o.id_predmet
order by broj desc

8. За сваког ученика приказати број оцена из рачунарства и информатике (за ученике


који нису још добили оцене из тог предмета приказати нулу).
select ime,prezime,count(*) as broj
from ocena o
join ucenik u on o.id_ucenik=u.id
join predmet p on o.id_predmet=p.id
where p.naziv="Рачунарство и информатика"
group by u.id

You might also like