簡體   English   中英

PostgresQL 用聚合分組列

[英]PostgresQL grouping columns with aggregate

我目前有一個包含以下列的表格:

asset, asset_alt, price, price_alt, time

嘗試查看組合值以理想地返回如下內容:

asset, price, time

其中asset 和asset_alt 值將合並為一列(asset),價格將根據資產從price 或price_alt 得出。

我嘗試過類似的方法,但它沒有為資產提供適當的平均值,也沒有遵循上面提到的理想回報格式。

SELECT
ab.asset,
ab.asset_alt,
time_bucket('01:00:00'::interval, ab."time") AS bucket,
avg(ab.price) AS price,
avg(ab.price_alt) AS price_alt,
FROM assets ab
GROUP BY ab.asset, ab.asset_alt, (time_bucket('01:00:00'::interval, ab."time"));

其中asset 和asset_alt 值將合並為一列(asset)asset_alt 和asset 之間的關系是什么?

如果asset_alt 為空,則使用asset:

select 
COALESCE(ab.asset_alt, ab.asset) AS asset, -- join assets columns in one
-- use right price column
CASE 
  WHEN ab.asset_alt IS NOT NULL THEN ab.price_alt
  ELSE ab.price
END AS price
 FROM FROM assets ab
GROUP BY 
  COALESCE(ab.asset_alt, ab.asset),
  CASE 
   WHEN ab.asset_alt IS NOT NULL THEN ab.price_alt
   ELSE ab.price
  END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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