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 | |
正是我们想要的求和之后的结果。