Postgresql
在 Postgres 中計算 JSONB 數組的平均值
我的“答案”表中有一個名為“值”的列。
| value | |---------| | [1,2] | | [1] | | [1,2,3] |
“值”的類型是“jsonb”。
我想得到每一行中每個數組的平均值:
SELECT avg(value) AS avg_value FROM answers
但這不起作用,因為 avg() 不是 jsonb 函式。我試過了:
SELECT avg(value::integer[]) as avg_value FROM answers
即嘗試將 jsonb 數組轉換為整數數組,然後取平均值,但出現以下錯誤:“無法將類型 jsonb 轉換為整數
$$ $$. 空值”。 有任何想法嗎?
您需要使用
jsonb_array_elements
.您可以在相關子查詢中執行此操作:
SELECT (SELECT AVG(value::decimal(18,5)) FROM jsonb_array_elements(value) ) AS avg_value FROM answers;