[英]How to only sum unique values in postgres?
我在下面有一個表格,我試圖通過唯一的訂單號對order_value
分組求和。 但是,我嘗試過的查詢返回了全部金額。 預期回報為: 34.24
但實際回報為50.37
。 如何獲得正確的返回值?
訂單號 | 訂單價值 | ID |
---|---|---|
#1005 | 16.03 | 1 |
#1005 | 16.03 | 2 |
#1006 | 18.21 | 3 |
我的查詢:
SELECT order_number,
SUM(order_value)
FROM customer_response
GROUP BY order_number ;
我也試過:
SELECT SUM(order_value)
FROM customer_response
GROUP BY order_number, order_value
SELECT SUM(order_value)
FROM customer_response
GROUP BY order_number
這似乎應該很簡單,但我只是不確定我哪里出錯了。
與您的查詢非常相似,但首先只提取order_number
的不同行。
SELECT order_number, SUM(order_value)
FROM
(
select distinct on (order_number) *
from customer_response
) t
GROUP BY order_number;
如果您需要獲取所有訂單的總和,請刪除分組。
SELECT SUM(order_value)
FROM
(
select distinct on (order_number) *
from customer_response
) t;
編輯
實際上,由於每個order_number
求和只剩下一行,因此分組是沒有意義的。 所以第一個查詢變得簡單
select distinct on (order_number) *
from customer_response;
你可以試試這個:
SELECT sum(t.order_avg)
FROM
( SELECT avg(order_value) AS order_avg
FROM customer_response
GROUP BY order_number
) AS t
如果要獲取每個Order_Number
的所有不同Order_Value
的總和,可以按Order_Number
以獲取每個組中的總和,然后使用SUM()
window function 獲得總數:
SELECT DISTINCT SUM(SUM(DISTINCT Order_Value)) OVER () total_value
FROM customer_response t
GROUP BY Order_Number;
請參閱演示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.