Sql oracle中价格和数量的总和

Sql oracle中价格和数量的总和,sql,database,oracle,sum,partition-by,Sql,Database,Oracle,Sum,Partition By,我有个问题。我需要计算我数据库中的订单总数。我有三张桌子: CREATE TABLE Potrawa( id_potrawy INT CONSTRAINT Potrawa_PK PRIMARY KEY, Nazwa VARCHAR2(150) NOT NULL, Cena NUMBER(6,2) NOT NULL, **(PRICE)** Opis VARCHAR(100) ); CREATE TABLE Zamowienie( id_zamowienia INT CONSTRAINT Zam

我有个问题。我需要计算我数据库中的订单总数。我有三张桌子:

CREATE TABLE Potrawa(
id_potrawy INT CONSTRAINT Potrawa_PK PRIMARY KEY,
Nazwa VARCHAR2(150) NOT NULL,
Cena NUMBER(6,2) NOT NULL, **(PRICE)**
Opis VARCHAR(100)
);

CREATE TABLE Zamowienie(
id_zamowienia INT CONSTRAINT Zamowienie_PK PRIMARY KEY,
Ilosc INT, **(QUANTITY)**
Data DATE,
Ocena INT CONSTRAINT Ocena_Zamowienie_CHECK CHECK (Ocena IN (1, 2, 3, 4, 5)),
klient_id INT CONSTRAINT Zamowienie_Klient_FK REFERENCES Klient(id_klient),
pracownik_id INT CONSTRAINT Zamowienie_Pracownik_FK REFERENCES Pracownik(id_pracownik),
potrawy_id INT CONSTRAINT Zamowienie_Menu_FK REFERENCES Potrawa(id_potrawy),
typ_zamowienia_id INT CONSTRAINT Zamowienie_Typ_FK REFERENCES Typ_zamowienia(id_typ_zamowienia)
);

CREATE TABLE Menu(
restauracja_id INT NOT NULL CONSTRAINT Menu_Restauracje_FK REFERENCES Restauracja(id_restauracja),
potrawa_id INT NOT NULL CONSTRAINT Menu_Potrawa_FK REFERENCES Potrawa(id_potrawy),
CONSTRAINT Menu_PK PRIMARY KEY(restauracja_id, potrawa_id),
rodzaj_menu_id INT CONSTRAINT Menu_Rodzaj_Menu_FK REFERENCES Rodzaj_menu(id_rodzaj_menu)
);
我想写一个查询,显示每个订单的总和。我写了这样的东西,但不起作用。总数不是我所期望的

select distinct z.id_zamowienia as "zamowienie", z.potrawy_id as "Potrawa", p.nazwa as "Nazwa potrawy", z.ilosc as ILOSC,
count(*) over(partition by z.potrawy_id, z.id_zamowienia) * p.cena AS "CENA"
from potrawa p, menu m, zamowienie z
where p.id_potrawy = m.potrawa_id and m.potrawa_id = z.potrawy_id

有没有人能告诉我如何修复它,或者我如何用另一种方法来修复它(分区是必须的)。

首先,最好使用正确的连接语法。是否要为该分区查找sum(Ilosc)而不是count(*)

select distinct
    z.id_zamowienia as "zamowienie",
    z.potrawy_id as "Potrawa",
    p.nazwa as "Nazwa potrawy",
    z.ilosc as ILOSC,
    sum(Ilosc) over(partition by z.potrawy_id, z.id_zamowienia) * p.cena AS "CENA"
from
    potrawa p
    inner join menu m on p.id_potrawy = m.potrawa_id
    inner join  zamowienie z and m.potrawa_id = z.potrawy_id

请稍微解释一下你想要的输出