Da l’ je ovo korektno?
SELECT ime, prezime, placa, AVG(placa) as prosjek
FROM zaposlenici
WHERE id_zaposlenika IN (SELECT id_voditelja from odjel);
Da l’ je ovo korektno?
SELECT ime, prezime, placa, AVG(placa) as prosjek
FROM zaposlenici
WHERE id_zaposlenika IN (SELECT id_voditelja from odjel);
Opet isti error, kvragu
Jedno od rješenja je da isključiš full group by.
Naguglaj tu grešku, može biti kojekakvih razlika i u odnosu na MySQL verziju.
Jedino je ovo za oracle…
drop table zaposlenici;
create table zaposlenici (
id_zaposlenika number,
ime varchar2(100),
prezime varchar2(100),
placa number
);
insert into zaposlenici values (1, 'ime1', 'prezime1', 100);
insert into zaposlenici values (2, 'ime2', 'prezime2',200);
insert into zaposlenici values (3, 'ime3', 'prezime3',300);
drop table odjel;
create table odjel (
id_odjel number,
id_voditelja number
);
insert into odjel values (11, 1);
insert into odjel values (22, 2);
--place voditelja
SELECT ime, prezime, z.placa
FROM zaposlenici z, odjel o
WHERE z.id_zaposlenika = o.id_voditelja
union all
--improvizirani upit za prosjek
SELECT 'PROSJEK' as ime, null as prezime, sum(z.placa) / (SELECT COUNT(*) FROM odjel)
FROM zaposlenici z, odjel o
WHERE z.id_zaposlenika = o.id_voditelja
group by 'PROSJEK', null
Ugasio sam ONLY_FULL_GROUP_BY. Kada unesem ovaj upit:
SELECT zaposlenici.ime, zaposlenici.prezime, zaposlenici.placa, SUM(zaposlenici.placa / (SELECT COUNT(*) FROM odjel)) as prosjek
FROM odjel
JOIN zaposlenici
WHERE odjel.id_voditelja = zaposlenici.id_zaposlenika;
prikazuje samo jednog voditelja i ukupan prosjek placa svih voditelja odjela. Znaci dobijem ovo:
Meni treba da se ispisu jos 3 voditelja odjela i da pise prosjek njihovih plaća jer postoje 4 voditelja odjela. Plaće svakog pojedinog voditelja(kao sto je gore za Mariju Marić) bi isto bilo dobro da se ispišu ali ne moraju
Nisam pratio sve, probaj na kraju stavi GROUP BY odjel.id_voditelja
SELECT z.ime, z.prezime, z.placa,
(SELECT SUM(z.placa) / (SELECT COUNT(*) FROM odjel)
FROM zaposlenici z, odjel o
WHERE z.id_zaposlenika = o.id_voditelja)
FROM zaposlenici z, odjel o
WHERE z.id_zaposlenika = o.id_voditelja
Ovo je nabrzaka.
Radi, svaka cast! Hvala!