[Oracle] Update danych w tabeli

0

Witam

Powiedzmy, że mamy taką tabelę, np. o nazwie FIRMA:

user image</image>

Chcę teraz wykonać taki update danych mianowicie firmy, które mają łącznie dochody mniejsze niż 10000 muszą mieć Status zmieniony na "mala", czyli dla Romix 200 + 300 = 500 więc zmiana statusu na update (bo wartość sumy mniejsza niż 10000), dla Krzak & Krzew 500 + 100 + 200 + 300 = 1000, więc też zmiana statusu.

Domyślam się, że trzeba mniej więcej:

UPDATE Firma SET Status = mala [WHERE warunek]

No i mam problem z tym warunkiem, proszę o pomoc.

Pozdrawiam

0
update firma set status = 'mala' where firma in (select firma from firma having sum(dochody) < 10000 group firma)
0

Mam teraz taki problem:

ORA-00937: not a single-group group function</image>

0

Już sobie poradziłem przed having trzeba było group by wstawić, tylko zauważyłem, że to nie działa jak powinno, bo nie sprawdza czy suma jest mniejsza, a pojedyncze rekordy. programator pamięci

0

Czy poniższy kod działa tak jak chcesz?

CREATE TABLE firma (
 firma VARCHAR2(20),
 umowanr VARCHAR2(20),
 dochody NUMBER,
 status VARCHAR2(20)
);

BEGIN
 INSERT INTO firma VALUES('romix', 4, 200, 'mala');
 INSERT INTO firma VALUES('romix', 1, 300, 'mala');
 INSERT INTO firma VALUES('mercedes', 6, 4500, 'duza');
 INSERT INTO firma VALUES('mercedes', 2, 9000, 'duza');
 INSERT INTO firma VALUES('mercedes', 3, 7000, 'duza');
 INSERT INTO firma VALUES('krzak & krzew', 5, 500, 'srednia');
 INSERT INTO firma VALUES('krzak & krzew', 7, 100, 'srednia');
 INSERT INTO firma VALUES('krzak & krzew', 8, 200, 'srednia');
 INSERT INTO firma VALUES('krzak & krzew', 9, 300, 'srednia');
END;

UPDATE firma
SET status = 'mala' WHERE firma IN (
 SELECT firma
 FROM firma
 GROUP BY firma
 HAVING SUM(dochody) < 10000
);

1 użytkowników online, w tym zalogowanych: 0, gości: 1