在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,我想我应该总结一下
大家好,我没有什么问题,我有这样的桌子
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,我想我应该总结一下