SQL upit

Pozdrav svima, učim za ispit pa me zanima kako riješiti 2 zadatka na kojima sam zapeo:

baza izgleda:

Tablica ISPIT: studentID, predmetID, datumIspit, nastavnikID, ocjena
Tablica student: studentID, ime, prezime, datRod, pbrRod, pbrStan

a) Ispisati predmet koji ima najmanju prolaznost (omjer položenih i nepoloženih ispita)

b) Ispisati studente koji su sve ispite položili iz prvog puta

[quote=“Kupnja”]Pozdrav svima, učim za ispit pa me zanima kako riješiti 2 zadatka na kojima sam zapeo:

baza izgleda:

Tablica ISPIT: studentID, predmetID, datumIspit, nastavnikID, ocjena
Tablica student: studentID, ime, prezime, datRod, pbrRod, pbrStan

a) Ispisati predmet koji ima najmanju prolaznost (omjer položenih i nepoloženih ispita)

b) Ispisati studente koji su sve ispite položili iz prvog puta[/quote]

b) možda ovo?

SELECT *
FROM STUDENT
WHERE STUDENTID NOT IN (SELECT STUDENTID FROM ISPIT WHERE OCJENA = 1)

[quote=“Kupnja”]Pozdrav svima, učim za ispit pa me zanima kako riješiti 2 zadatka na kojima sam zapeo:

baza izgleda:

Tablica ISPIT: studentID, predmetID, datumIspit, nastavnikID, ocjena
Tablica student: studentID, ime, prezime, datRod, pbrRod, pbrStan

a) Ispisati predmet koji ima najmanju prolaznost (omjer položenih i nepoloženih ispita)

b) Ispisati studente koji su sve ispite položili iz prvog puta[/quote]

a) ne, nisam siguran da je to to :slight_smile:

SELECT TOP 1
DISTINCT i.PREDMETID, (SELECT COUNT() FROM ISPIT WHERE ISPITID = i.ISPITID AND OCJENA = 1) / (SELECT COUNT() FROM ISPIT WHERE ISPITID = i.ISPITID)
FROM ISPIT i
ORDER BY 2 DESC

Hvala puno!

Još se mučim s order by pa ako može pomoć:

tablica datoteka:
datotekaID, naziv, tip, datumKreiranja, datumIzmjene, direktorijID, velicina

tablica: pristup:
username, datotekaID, vrijemePristupa, akcija

zadatak:
Za svaki mjesec tekuće godine ispisati prosječnu veličinu kreiranih datoteka

[quote=“Kupnja”]Još se mučim s order by pa ako može pomoć:

tablica datoteka:
datotekaID, naziv, tip, datumKreiranja, datumIzmjene, direktorijID, velicina

tablica: pristup:
username, datotekaID, vrijemePristupa, akcija

zadatak:
Za svaki mjesec tekuće godine ispisati prosječnu veličinu kreiranih datoteka[/quote]

Probaj nešto ovakvo:

SELECT MONTH(datumKreiranja), SUM(velicina) / COUNT(*)
FROM datoteka
WHERE YEAR(datumKreiranja) = 2010 – ili varijabla godine
GROUP BY MONTH(datumKreiranja)
ORDER BY MONTH(datumKreiranja)

Dobro radi, ali kako da dodam naziv u izlazne rezultate?

ubiti ono što me sad muči je što sam isprobavao nešto drugačije pa mi stalno javlja grešku, ovdje je kod:
SELECT naziv, velicina, MONTH(datumKreiranja) as mjesec
from datoteka
GROUP BY mjesec

Javlja grešku: you tried to execute a query that does not include specified expression ‘naziv’ as part od an aggregate function

[quote=“Kupnja”]ubiti ono što me sad muči je što sam isprobavao nešto drugačije pa mi stalno javlja grešku, ovdje je kod:
SELECT naziv, velicina, MONTH(datumKreiranja) as mjesec
from datoteka
GROUP BY mjesec

Javlja grešku: you tried to execute a query that does not include specified expression ‘naziv’ as part od an aggregate function[/quote]

Naravno da javlja jer ono što je u “čistom” selectu mora biti i u GROUP BY
Što u stvari želiš jer mi se taj upit ne čini nešto logičan?

Naziv čega, mjeseca?
Samo se naziv mjeseca čini smisleno ovdje.

[quote=“trnac”]Naravno da javlja jer ono što je u “čistom” selectu mora biti i u GROUP BY
i
GROUP BY naziv, velicina, MONTH(datumKreiranja)

Što u stvari želiš jer mi se taj upit ne čini nešto logičan?[/quote]

Želio bih da mi grupira po mjesecu ali da izbaci u tablici podatke ovim redom: naziv, velicina, mjesec

[quote=“trnac”]Probaj nešto ovakvo:

SELECT MONTH(datumKreiranja), SUM(velicina) / COUNT()
FROM datoteka
WHERE YEAR(datumKreiranja) = 2010 – ili varijabla godine
GROUP BY MONTH(datumKreiranja)
ORDER BY MONTH(datumKreiranja)[/quote]
Jel ovdje gore umjesto "SUM(velicina) / COUNT(
)" moglo biti AVG(velicina)?

Što tebi znači “grupira po mjesecu”?

Ako želiš podatke u tom obliku onda nema grupiranja, samo ORDER BY
SELECT naziv, velicina, MONTH(datumKreiranja) as mjesec
from datoteka
ORDER BY mjesec

Da ako postoji u toj bazi u kojoj radiš.

[quote=“trnac”]
SELECT naziv, velicina, MONTH(datumKreiranja) as mjesec
from datoteka
ORDER BY mjesec[/quote]

kad ovako stavim onda mi se prilikom izvođenja pojavi prozor koji me pita
"enter Parameter Value" za mjesec, ako ostavim prazno onda mi sortira po nazivu

[quote=“Kupnja”]kad ovako stavim onda mi se prilikom izvođenja pojavi prozor koji me pita
"enter Parameter Value" za mjesec, ako ostavim prazno onda mi sortira po nazivu[/quote]

Probaj ovako:

ORDER BY MONTH(datumKreiranja)
ili
ORDER BY 3

Imaš pivu i ćevape! :slight_smile: Sad sam počeo kužiti malo. E sad sam zapeo na zadnjem zadatku, ako imaš vremena još ovaj bio bih zahvalan!

Tablica korisnik:
korisnikID, ime, prezime

Tablica racuni:
korisnikID, username

Ispisati sve korisnike koji imaju veći broj korisničkih imena (username) od prosjeka. Ispišite ime, prezime i broj korisničkih imena.

[quote=“Kupnja”]Imaš pivu i ćevape! :slight_smile: Sad sam počeo kužiti malo. E sad sam zapeo na zadnjem zadatku, ako imaš vremena još ovaj bio bih zahvalan!

Tablica korisnik:
korisnikID, ime, prezime

Tablica racuni:
korisnikID, username

Ispisati sve korisnike koji imaju veći broj korisničkih imena (username) od prosjeka. Ispišite ime, prezime i broj korisničkih imena.[/quote]

Probaj ovako…

SELECT korisnikID, ime, prezime, COUNT()
FROM korisnik
GROUP BY korisnikID, ime, prezime
HAVING COUNT(
) > (SELECT AVG(brojracuna) FROM (SELECT korisnikID, COUNT(*) brojracuna FROM racuni GROUP BY korisnikID) pomtab)

Nemam di isprobati jer nemam bazu, ali bitno mmi je da proučim rješenje jer će ionako na ispitu biti neš drugo, bitno je da skužim način razmišljanja.

Javi se kad si slobodan, plaćam pivu i ćevape!

ovo zadnje, jesi li mislio da je brojracuna zapravo username ili kako, ne vidim da si igdje koristio taj podatak?