Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
razbol Gost
|
Postano: 9:35 sri, 14. 10. 2009 Naslov: Kompleksni upit |
|
|
Trebao bih pomoć oko jednog zadatka.
Tablice su:
Učenik (UceniciID, JMBG,Prezime, Ime)
Predmeti (PredmetiId, SifraPredmeta, NazivPredmeta)
Ocjene (OcjeneID, UceniciID, PredmetiID, Ocjena)
Treba napisati SQL upit koji će za svaki predmet dati broj koliko puta se koja ocjena ponavljala i koja je prosječna ocjena predmeta ako se izuzmu jedinice i to u obliku:
Predmet | Broj jedinica | Broj dvojki | Broj trojki | Broj četvorki | Broj petica | Prosjek (bez jedinica)
Svaka pomoć bi je dobrodošla.
Tnx
Trebao bih pomoć oko jednog zadatka.
Tablice su:
Učenik (UceniciID, JMBG,Prezime, Ime)
Predmeti (PredmetiId, SifraPredmeta, NazivPredmeta)
Ocjene (OcjeneID, UceniciID, PredmetiID, Ocjena)
Treba napisati SQL upit koji će za svaki predmet dati broj koliko puta se koja ocjena ponavljala i koja je prosječna ocjena predmeta ako se izuzmu jedinice i to u obliku:
Predmet | Broj jedinica | Broj dvojki | Broj trojki | Broj četvorki | Broj petica | Prosjek (bez jedinica)
Svaka pomoć bi je dobrodošla.
Tnx
|
|
[Vrh] |
|
Gogs Forumaš(ica)
Pridružen/a: 17. 10. 2002. (22:28:12) Postovi: (155)16
Lokacija: Zagreb
|
Postano: 10:02 sri, 14. 10. 2009 Naslov: Re: Kompleksni upit |
|
|
[quote="razbol"]Trebao bih pomoć oko jednog zadatka.
Tablice su:
Učenik (UceniciID, JMBG,Prezime, Ime)
Predmeti (PredmetiId, SifraPredmeta, NazivPredmeta)
Ocjene (OcjeneID, UceniciID, PredmetiID, Ocjena)
Treba napisati SQL upit koji će za svaki predmet dati broj koliko puta se koja ocjena ponavljala i koja je prosječna ocjena predmeta ako se izuzmu jedinice i to u obliku:
Predmet | Broj jedinica | Broj dvojki | Broj trojki | Broj četvorki | Broj petica | Prosjek (bez jedinica)
Svaka pomoć bi je dobrodošla.
Tnx[/quote]
Probaj sa:
select NazivPredmeta, sum(o.Ocjena = 1, 1, 0) as brJedinica, sum(o.Ocjena = 2, 1, 0) as brDvojki, sum(o.Ocjena = 3, 1, 0) as brTrojki, sum(o.Ocjena = 4, 1, 0) as brCetvorki, sum(o.Ocjena = 5, 1, 0) as brPetica, (2*brDvojki+3*brTrojki+4*brCetvorki+5*brPetica)/(brDvojki + brTrojki + brCetvorki + brPetica) as prosjek from Predmeti p left join Ocjene o on p.PredmetiId = o.PredmetiID group by p.PredmetiId
to je ovako nabrzaka iz glave... vjerojatno sam nesto propustio...
razbol (napisa): | Trebao bih pomoć oko jednog zadatka.
Tablice su:
Učenik (UceniciID, JMBG,Prezime, Ime)
Predmeti (PredmetiId, SifraPredmeta, NazivPredmeta)
Ocjene (OcjeneID, UceniciID, PredmetiID, Ocjena)
Treba napisati SQL upit koji će za svaki predmet dati broj koliko puta se koja ocjena ponavljala i koja je prosječna ocjena predmeta ako se izuzmu jedinice i to u obliku:
Predmet | Broj jedinica | Broj dvojki | Broj trojki | Broj četvorki | Broj petica | Prosjek (bez jedinica)
Svaka pomoć bi je dobrodošla.
Tnx |
Probaj sa:
select NazivPredmeta, sum(o.Ocjena = 1, 1, 0) as brJedinica, sum(o.Ocjena = 2, 1, 0) as brDvojki, sum(o.Ocjena = 3, 1, 0) as brTrojki, sum(o.Ocjena = 4, 1, 0) as brCetvorki, sum(o.Ocjena = 5, 1, 0) as brPetica, (2*brDvojki+3*brTrojki+4*brCetvorki+5*brPetica)/(brDvojki + brTrojki + brCetvorki + brPetica) as prosjek from Predmeti p left join Ocjene o on p.PredmetiId = o.PredmetiID group by p.PredmetiId
to je ovako nabrzaka iz glave... vjerojatno sam nesto propustio...
_________________ Dvije stvari su beskonacne, svemir i ljudska glupost, ali sto se svemira tice nisam posve siguran.
|
|
[Vrh] |
|
razbol Gost
|
Postano: 10:35 sri, 14. 10. 2009 Naslov: |
|
|
Nažalost to nije to. Trebalo bi za svaki predmet izbrojati koliko ima (recimo) zaključenih jedinica, dvojki,...
Nešto kao
[code:1]
SELECT
p.NazivPredmeta AS Predmet,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 1)) AS brJedinica,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 2)) AS brDvojki,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 3)) AS brTrojki,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 4)) AS brCetvorki,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 5)) AS brPetica
FROM
Predmeti p
LEFT OUTER JOIN Ocjene o ON (p.PredmetiID = o.PredmetiID)
GROUP BY
p.NazivPredmeta
[/code:1]
s time da ovo ne broji pojedinačno za svaki predmet nego ukupno iz svih predmeta. Nemogu skontat kako to napravit...
Nažalost to nije to. Trebalo bi za svaki predmet izbrojati koliko ima (recimo) zaključenih jedinica, dvojki,...
Nešto kao
Kod: |
SELECT
p.NazivPredmeta AS Predmet,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 1)) AS brJedinica,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 2)) AS brDvojki,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 3)) AS brTrojki,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 4)) AS brCetvorki,
(SELECT COUNT(Ocjena) FROM Ocjene WHERE (Ocjena = 5)) AS brPetica
FROM
Predmeti p
LEFT OUTER JOIN Ocjene o ON (p.PredmetiID = o.PredmetiID)
GROUP BY
p.NazivPredmeta
|
s time da ovo ne broji pojedinačno za svaki predmet nego ukupno iz svih predmeta. Nemogu skontat kako to napravit...
|
|
[Vrh] |
|
Gogs Forumaš(ica)
Pridružen/a: 17. 10. 2002. (22:28:12) Postovi: (155)16
Lokacija: Zagreb
|
Postano: 10:47 sri, 14. 10. 2009 Naslov: |
|
|
Ma krivo sam napisao, zaboravio sam IF, za svaku ocjenu treba napraviti ovakvu izmjenu:
sum(o.Ocjena = 1, 1, 0) zamijeniti sa sum(if(o.Ocjena = 1, 1, 0))
Ma krivo sam napisao, zaboravio sam IF, za svaku ocjenu treba napraviti ovakvu izmjenu:
sum(o.Ocjena = 1, 1, 0) zamijeniti sa sum(if(o.Ocjena = 1, 1, 0))
_________________ Dvije stvari su beskonacne, svemir i ljudska glupost, ali sto se svemira tice nisam posve siguran.
|
|
[Vrh] |
|
razbol Gost
|
Postano: 16:14 sri, 14. 10. 2009 Naslov: |
|
|
Evo odgovora za MSSQL:
[code:1]
SELECT
Predmeti.NazivPredmeta,
sum(CASE WHEN Ocjene.Ocjena = 1 THEN 1 ELSE 0 END) AS Broj1,
sum(CASE WHEN Ocjene.Ocjena = 2 THEN 1 ELSE 0 END) AS Broj2,
sum(CASE WHEN Ocjene.Ocjena = 3 THEN 1 ELSE 0 END) AS Broj3,
sum(CASE WHEN Ocjene.Ocjena = 4 THEN 1 ELSE 0 END) AS Broj4,
sum(CASE WHEN Ocjene.Ocjena = 5 THEN 1 ELSE 0 END) AS Broj5,
ISNULL(((CAST(sum(Ocjene.Ocjena) AS FLOAT) - sum(CASE WHEN Ocjene.Ocjena = 1 THEN 1 ELSE 0 END)) / sum(CASE WHEN Ocjene.Ocjena = 1 THEN 0 ELSE 1 END)), 0) AS Prosjek
FROM
Predmeti
LEFT OUTER JOIN Ocjene ON (Predmeti.PredmetiID = Ocjene.PredmetiID)
GROUP BY
Predmeti.NazivPredmeta
[/code:1]
Hvala Gogsu!
Evo odgovora za MSSQL:
Kod: |
SELECT
Predmeti.NazivPredmeta,
sum(CASE WHEN Ocjene.Ocjena = 1 THEN 1 ELSE 0 END) AS Broj1,
sum(CASE WHEN Ocjene.Ocjena = 2 THEN 1 ELSE 0 END) AS Broj2,
sum(CASE WHEN Ocjene.Ocjena = 3 THEN 1 ELSE 0 END) AS Broj3,
sum(CASE WHEN Ocjene.Ocjena = 4 THEN 1 ELSE 0 END) AS Broj4,
sum(CASE WHEN Ocjene.Ocjena = 5 THEN 1 ELSE 0 END) AS Broj5,
ISNULL(((CAST(sum(Ocjene.Ocjena) AS FLOAT) - sum(CASE WHEN Ocjene.Ocjena = 1 THEN 1 ELSE 0 END)) / sum(CASE WHEN Ocjene.Ocjena = 1 THEN 0 ELSE 1 END)), 0) AS Prosjek
FROM
Predmeti
LEFT OUTER JOIN Ocjene ON (Predmeti.PredmetiID = Ocjene.PredmetiID)
GROUP BY
Predmeti.NazivPredmeta
|
Hvala Gogsu!
|
|
[Vrh] |
|
|