1. 计算数组类型的元素之和
首先创建包含数组类型字段的表
1  | CREATE TABLE sal_emp (  | 
其中pay_by_quarter表示每个季度的工资数组,数组长度为4。
需求:求指定季度区间内的工资总和。
插入测试数据
1  | INSERT INTO sal_emp  | 
由于postgresql本身支持按照索引取值,还支持按照索引范围取值,所以,很自然想到使用区间值来实现求和的首尾季度,但如何求和呢?
1  | select pay_by_quarter[1:4] from sal_emp;  | 
查询结果如下:
1  | pay_by_quarter |  | 
如何将这4个数字累加起来呢,你可能想到使用sum函数来求和,但很遗憾,sum并不支持数组类型的求和。那么,我们可不可以将数组内的数字拆分成4条数据呢,当然可以。使用unnest函数可以帮我们做到这一点。
所以最后的sql变成了这样
1  | select  | 
执行结果如下:
1  | sum |  | 
正是我们想要的求和之后的结果。