Muszę policzyć odchylenie wagi danego produktu od średniej wagi dla grupy produktów do której ten produkt należy.
W tym celu utworzyłem widok, w którym w pierwszym kropu grupuję produkt po nazwa prod, format, technologia oraz jm - robie to ponieważ ten sam produkt powtarza się wielokrotnie, a w widoku chcę policzyć średnią dla grupy do której ten należy.W kolejnym etapie grupuję po format, technologia i j/m (czyli po grupie do jakiej należy dany produkt), podliczam ile razy dana grupa się pojawiła oraz średnią wagę.
CREATE OR REPLACE VIEW srednia_waga_poz AS SELECT count(*) liczba_wyst, a.format format, a.technologia technologia, a.jm, MAX(a.waga) max_waga, MIN(a.waga) min_waga, sum(a.waga)/count(*) srednia_waga FROM ( SELECT ip.format, ip.technologia, ip.nazwa_prod, ip.jm, ip.waga FROM Inventory_Part ip WHERE ip.waga<> 0 AND ip.waga IS NOT NULL GROUP BY ip.format, ip.technologia, ip.nazwa_prod, ip.jm, ip.waga ) a GROUP BY a.format, a.technologia, a.jm WITH READ ONLY
W drugim zapytaniu chce wyliczyć odchylenie od średniej wagi oraz o ile procent.
SELECT b.nazwa_prod, b.format, b.technologia, b.jm, swp.liczba_wyst, b.waga, swp.srednia, b.waga - swp.srednia_waga odch_waga, round(ABS((b.waga - swp.srednia_waga )) * 100 / swp.srednia_waga ,1) procent_waga FROM (SELECT ip.nazwa_prod, ip.waga, ip.format, ip.technologia, ip.jm FROM Inventory_Part ip WHERE ip.waga<> 0 AND ip.waga IS NOT NULL GROUP BY ip.nazwa_prod, ip.waga, ip.format, ip.technologia, ip.jm) b, SREDNIA_WAGA_POZ swp WHERE swp.FORMAT = b.format AND swp.TECHNOLOGIA = b.technologia AND swp.jm = b.jm AND swp.LICZBA_WYST > 10
Niestety wyskakują mi dwa błędy:
ora-00904 - "A1"."WAGA": invalid identifier - czasem jest to "A6","A12" oraz
ora-02063 - proceding line from BAZA
Również kiedy próbuję zrobić zwykłe złączenie:
SELECT ip.*, sw.* FROM Inventory_Part ip, Srednia_Waga_Poz sw WHERE ip.format = sw.format AND ip.technologia = sw.technologia AND ip.jm = sw.jm
pojawiają się te same błędy. Zauważyłem, że jest to wina grupowania w widoku po:
ip.nazwa_prod,
ip.waga,
ip.format,
ip.technologia,
ip.jm
bez tego błędy się nie pojawiają. Nie wiem w czym tkwi problem i nie mam pomysłu jak można to wykonać inaczej.
Proszę o jakąkolwiek pomoc