2013-06-26 50 views
1

我有一個表SQL '而' 條件

CREATE TABLE dollars (
    price decimal, 
    amount decimal 
); 

每個記錄具有價格(1,23美元)和量(0.2)。如何選擇記錄,直到金額不等於5或更多。

例如:

  1. 價格:4,量:2.5
  2. 價格:2,量:1.5
  3. 價錢:5,量:3

共3項與彙總金額7.

+0

我覺得你需要在哪裏條件。 雖然是一個循環運行,直到滿足條件。在這裏你不能指定這樣的條件。 –

+0

你是指循環每個記錄和存儲數量總和?如果查詢從表中選擇隨機記錄,請使用定義良好的'where'子句 – luchosrock

+0

?無論如何,解決方案是使用窗口函數。 – 2013-06-26 17:19:14

回答

1

「價格」欄上是否有唯一鍵?

嘗試這樣:

SELECT 
    dol.id, 
    dol.price, 
    dol.amount, 
    (SELECT sum(amount) FROM public.dollars dol2 WHERE dol2.price <= dol.price) AS sum_amount 
FROM 
    public.dollars dol 
WHERE 
    (SELECT floor(sum(amount)) FROM public.dollars dol2 WHERE dol2.price <= dol.price) <= 5 
ORDER BY price ASC; 

當然你也可以「按訂單」的條件,如果你要選擇與例如記錄變化較低的ID,而不是價格。

0

我認爲需要一個WHERE條件而不是一段時間 類似於

SELECT * FROM dollars 
    WHERE amount < 5