Redshift Avg 不返回小数
Redshift Avg not returning decimals
我不知道如何在平均值计算中 return 小数。
我有:
select
r_i_flag,
mr_age_bucket,
count(request_id) as sum_requests,
avg(age_of_mr_days) as avg_age_of_mr_days,
median(age_of_mr_days) as median_age_of_mr_days
from
together
group by
1,
2
order by
1 desc,
2
我试过使用 to_number 将 mr_age_bucket 转换为数字,尝试将 avg/median 转换为数字,小数,但我得到的只是四舍五入的数字:
r_i_flag
mr_age_bucket
sum_requests
avg_age_of_mr_days
median_age_of_mr_days
零售业
<7 天
29
1
1
零售业
>7 天
107
46
30
机构
<7 天
1
5
5
机构
>7 天
13
45
29
我觉得这是一件非常愚蠢的事情,但我想不通。我如何 return 一个非四舍五入的数字?谢谢
问题是传递给 AVG 的数据类型,只需将其除以 1.0 即可。投射到 DOUBLE PRECISION
或 REAL
也可以
select
r_i_flag,
mr_age_bucket,
count(request_id) as sum_requests,
avg(age_of_mr_days / 1.0) as avg_age_of_mr_days,
avg(age_of_mr_days::double precision),
avg(age_of_mr_days::real),
median(age_of_mr_days) as median_age_of_mr_days
from
together
group by
1,
2
order by
1 desc,
2
我不知道如何在平均值计算中 return 小数。
我有:
select
r_i_flag,
mr_age_bucket,
count(request_id) as sum_requests,
avg(age_of_mr_days) as avg_age_of_mr_days,
median(age_of_mr_days) as median_age_of_mr_days
from
together
group by
1,
2
order by
1 desc,
2
我试过使用 to_number 将 mr_age_bucket 转换为数字,尝试将 avg/median 转换为数字,小数,但我得到的只是四舍五入的数字:
r_i_flag | mr_age_bucket | sum_requests | avg_age_of_mr_days | median_age_of_mr_days |
---|---|---|---|---|
零售业 | <7 天 | 29 | 1 | 1 |
零售业 | >7 天 | 107 | 46 | 30 |
机构 | <7 天 | 1 | 5 | 5 |
机构 | >7 天 | 13 | 45 | 29 |
我觉得这是一件非常愚蠢的事情,但我想不通。我如何 return 一个非四舍五入的数字?谢谢
问题是传递给 AVG 的数据类型,只需将其除以 1.0 即可。投射到 DOUBLE PRECISION
或 REAL
也可以
select
r_i_flag,
mr_age_bucket,
count(request_id) as sum_requests,
avg(age_of_mr_days / 1.0) as avg_age_of_mr_days,
avg(age_of_mr_days::double precision),
avg(age_of_mr_days::real),
median(age_of_mr_days) as median_age_of_mr_days
from
together
group by
1,
2
order by
1 desc,
2