PostgreSQL 分割字符串并运算

其他业务返回的几个分数存在一个字段中,并用逗号分割。最近出了一个分析,要分析各个纬度得分的平均值,因为数据很多,不能都取到内存中计算,只能用数据库处理。下面是处理方法(暂时解决方案):

select
    score.id, sum(score.score_array[1]::int) / count(1) as score1
from(
    select id, string_to_array(score_list_array, ',') as score_array
      from score
) score
group by score.id

显示某个纬度的结果:
掌握程度

类型转换 ::int 在有的ORM中会报错,要改下写法:

cast (score.score_array[1] as integer)

string_to_array函数说明:
<pre>
string_to_array(列名, 分割符),如:
2,3,4 分隔符使用 ,
2;3;4 分隔符使用 ;
</pre>

另,转后的数组下标从1开始

推荐阅读更多精彩内容