gpt4 book ai didi

postgresql - 如何旋转表格以显示两个单独的列

转载 作者:行者123 更新时间:2023-11-29 13:39:05 25 4
gpt4 key购买 nike

(我的数据库向我展示了每个人以及他们有多少支出以及他们在哪个阶段获得它 - f.y.i 并不是每个人都有全部 4 笔支出)

我创建了一个表格,其中包含不同阶段的平均值,分别称为支付 1、支付 2、支付 3 和支付 4。

每个阶段都有一个支付金额,并且有多个人获得不同的支付金额。

我现在遇到了一个问题,要转换此表,以便我可以有 2 列,其中包含支出阶段和平均值。我需要这个,以便我可以将其用作配置数据库中的条形图可视化。

我已经到了可以轻松显示平均值的阶段(见下文)

select 
round(avg(payout_1)::numeric,2) as avg_payout_1,
round(avg(payout_2)::numeric,2) as avg_payout_2,
round(avg(payout_3)::numeric,2) as avg_payout_3,
round(avg(payout_4)::numeric,2) as avg_payout_4
from payout_table

结果是我看到了每次支付的平均值 (yay) 但是现在我想要 2 列,1 表示支付类型和 2. 支付的平均金额

这是我的结果:

|------------------|---------------|---------------|---------------|
| avg_payout_1 | avg_payout_2 | avg_payout_3 | avg_payout_4 |
|------------------|---------------|---------------|---------------|
| 34.32 | 145.11 | 78.65 | 96.76 |
|------------------|---------------|---------------|---------------|

我希望它显示:

|------------------|---------------|
| payout | avg |
|------------------|---------------|
| payout_1 | 34.32 |
|------------------|---------------|
| payout_2 | 145.11 |
|------------------|---------------|

等等

最佳答案

使用unnest():

select 
unnest(array[
'payout_1',
'payout_2',
'payout_3',
'payout_4']) as payout,
unnest(array[
round(avg(payout_1)::numeric,2),
round(avg(payout_2)::numeric,2),
round(avg(payout_3)::numeric,2),
round(avg(payout_4)::numeric,2)]) as avg
from payout_table

jsonb:

select key as payout, value::numeric as avg
from (
select
round(avg(payout_1)::numeric,2) as payout_1,
round(avg(payout_2)::numeric,2) as payout_2,
round(avg(payout_3)::numeric,2) as payout_3,
round(avg(payout_4)::numeric,2) as payout_4
from payout_table
) s
cross join jsonb_each(to_jsonb(s))

Db<>fiddle

关于postgresql - 如何旋转表格以显示两个单独的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58097000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com