2016-02-09 71 views
0

嗨,大家好,我有一點問題,我有這樣的使用聚合函數,而在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)); 

表,我要創建功能,將所有物資的回報值(qantity *價格) 和我犯了這樣的功能:

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

,但只顯示與它的價值第一的商品ID的第一供應但不是所有的商品 也許 你知道如何做到這一點? 感謝

回答

0

更改此select (quantity*price) as value from supply; 這樣:

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

但是那麼它叫我也是按數量和價格來分組 – Jorgusss

0

我不得不做這樣的查詢:

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

,它也呈現出我id_com雙次像我有兩種商品與id 1和一個是400,第二個是30,我想我也許應該總結一下

+0

你不能按列分組,然後得到他們的總和,這實際上沒有什麼比'從供應量中選擇數量*價格' – ikhtiyor

+1

是的,現在我明白了,謝謝,它現在可以工作! – Jorgusss