我有一張這樣的桌子
| 姓名 | 一月 | 二月 | 行進 | 四月 | 可能 |
|---|---|---|---|---|---|
| 斯坦 | 3 | 無效的 | 7 | 無效的 | 3 |
| 黎明 | 2 | 3 | 9 | 2 | 無效的 |
我想在跳過空值的同時添加一個具有平均行數的列
| 姓名 | 一月 | 二月 | 馬爾 | 四月 | 可能 | 平均 |
|---|---|---|---|---|---|---|
| 斯坦 | 3 | 無效的 | 7 | 無效的 | 3 | 4.3 |
| 黎明 | 2 | 3 | 9 | 2 | 無效的 | 4 |
以下代碼為所有缺少值的行生成空值
SELECT *, AVG(jan feb mar apr may)/5 as avg
FROM t
提前致謝!
uj5u.com熱心網友回復:
我會使用arrays然后unnest它來計算avg
with cte as
(select *, unnest(array[jan,feb,mar,apr,may]) as months
from t)
select name,jan, feb, mar, apr, may, avg(months)
from cte
group by name, jan, feb, mar, apr, may;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/521707.html
上一篇:sql-如何在postgresql中第4次出現列組合后洗掉所有行
下一篇:在連接表中僅查找完全匹配
