在psql中创建函数时使用聚合函数

using aggregation function while creating function in psql

大家好,我没有什么问题,我有这样的桌子

CREATE TABLE client(
    regon VARCHAR NOT NULL, 
    title VARCHAR, 
    phone VARCHAR, 
PRIMARY KEY(regon));

CREATE TABLE commodity(
    id_com INT NOT NULL, 
    title VARCHAR, 
PRIMARY KEY(id_com));

CREATE TABLE supply(
    regon VARCHAR NOT NULL REFERENCES klient(regon), 
    id_supply INT NOT NULL, 
    id_com INT NOT NULLREFERENCES commodity(id_com), 
    quantity INT, 
    price DEC(5,2), 
    PRIMARY KEY(regon, id_supply, id_com));

并且我必须创建一个函数,它将 returns 所有供应品的价值(数量*价格) 我做了这样的功能:

CREATE OR REPLACE FUNCTION value1(out id int, out war double precision)as $$                                                  
    select (quantity*price) as value from supply;
$$             
language 'plpgsql';

但它只显示第一个商品的第一个供应及其价值,而不是所有商品 可能是 你知道怎么做吗? 谢谢

改变这个select (quantity*price) as value from supply; 对此:

select sum(quantity*price) from supply
group by id_com
order by id_com

我不得不这样查询:

select sum(quantity*price) from supply
    group by id_com,quantity,price
    order by id_com

而且它还向我显示 id_com 两次,就像我有两种 ID 为 1 的商品,一种是 400,第二种是 30,我想我应该总结一下