Trebam pomoc hitno! SQL problemcic

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!


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey