Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

pomoč top funckija

[es] :: MySQL :: pomoč top funckija

[ Pregleda: 1754 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cickozg

Član broj: 298871
Poruke: 3
*.adsl.net.t-com.hr.



Profil

icon pomoč top funckija08.02.2012. u 12:42 - pre 100 meseci
Pozdrav ljudi,
početnik sam u sql-u i trebala bi mi pomoč.

Dakle zanima me kako bi mogao ubaciti top funkciju koja bi vracala zadani broj najboljih studenata u sljedeci kod

select student.prezime,student.ime,avg(ocjene.ocjena)
from student,ocjene
where student.jmbag=ocjene.jmbag and ocjene.ocjena>1
group by student.prezime
order by avg(ocjene.ocjena) desc;

Hvala unaprijed!
 
Odgovor na temu

mret
Radovan Bacovic
Senior Data Warehouse Developer
Kindred Group
Stockholm, Sweden

Član broj: 78386
Poruke: 62
...148.91.adsl.dyn.beotel.net.

Sajt: www.kindredgroup.com


Profil

icon Re: pomoč top funckija08.02.2012. u 13:07 - pre 100 meseci
Code:
select student.prezime,student.ime,avg(ocjene.ocjena)
from student,ocjene
where student.jmbag=ocjene.jmbag and ocjene.ocjena>1
group by student.prezime
order by avg(ocjene.ocjena) desc


Pametnije ti je da ovde radis group by po PK (primary key), umesto
Code:
group by student.prezime

jer sta se desi ako imas Marka Markovica i Petra Markovica?
tip
Code:
GROUP by student.id



a za TOP funkciju (pretpostavljam da je to prvih N studenata) koristi
Code:
... limit N
(N-je onoliko koliko ti zapisa treba da vrati).
/*A sad odo` malo napolje*/
 
Odgovor na temu

cickozg

Član broj: 298871
Poruke: 3
*.adsl.net.t-com.hr.



Profil

icon Re: pomoč top funckija08.02.2012. u 13:34 - pre 100 meseci
Hvala ti na ovome, no upravo ovo grupiranje me sad dovelo do novog problema. Dakle kako bi sada izbacio iz prikaza ove što imaju jednu ili više ocjena 1, dakle da se u prosjek obzir uzmu samo studenti koji imaju pozitivne ocjene? Jer ovaj uvijet što sam postavio pod where
Code:
 ocjene.ocjena>1

ne funkcionira
 
Odgovor na temu

mret
Radovan Bacovic
Senior Data Warehouse Developer
Kindred Group
Stockholm, Sweden

Član broj: 78386
Poruke: 62
...148.91.adsl.dyn.beotel.net.

Sajt: www.kindredgroup.com


Profil

icon Re: pomoč top funckija09.02.2012. u 08:51 - pre 100 meseci
Kada imas AGREGATNE funckije (Group by...)

onda uslov grupe radis sa HAVING kaluzulom.
HAVING odredjuje uslov grupe kada je agregatna funkcija realizovana.

Probaj tako mozda bude kako treba.
/*A sad odo` malo napolje*/
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: pomoč top funckija09.02.2012. u 10:54 - pre 100 meseci
Probaj ovako nešto, moglo bi da radi:
Code:
select student.prezime, student.ime, avg(ocjene.ocjena)
from student,ocjene
where student.jmbag=ocjene.jmbag and student.jmbag not in (select distinct jmbag from ocjene where ocjena = 1)
group by student.jmbag
order by avg(ocjene.ocjena) desc
limit 10;
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
*.static.isp.telekom.rs.

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: pomoč top funckija09.02.2012. u 12:48 - pre 100 meseci
Ja bi to ovako uradio:

Code:

SELECT student.prezime, student.ime, AVG(ocjene.ocjena) AS prosecna_ocjena, MIN(ocjene.ocjena) AS najmanja_ocjena
FROM student 
 INNER JOIN ocjene ON student.jmbag = ocjene.jmbag
GROUP BY student.jmbag
HAVING najmanja_ocjena > 1
ORDER BY prosecna_ocjena DESC
LIMIT 10

"Common sense is not so common." - Voltaire
 
Odgovor na temu

[es] :: MySQL :: pomoč top funckija

[ Pregleda: 1754 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.