簡體   English   中英

如何僅對 postgres 中的唯一值求和?

[英]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;

SQL 小提琴

編輯
實際上,由於每個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM