从给定的表中我希望能够对具有相同数字的值求和(应该很容易,对吗?)
问题:可以从2到n个连续数字分配给定值。 由于某些原因,此信息存储在一行中,描述了值,起始编号和结束编号,如下所示。
表A
id | starting_number | ending_number | value
----+-----------------+---------------+-------
1 2 5 8
2 0 3 5
3 4 6 6
4 7 8 10
例如第一行意味着: 值'8'分配给数字:2,3和4(不包括5)
所以,我想要以下intermediairy结果表
表B
id | number | value
----+--------+-------
1 2 8
1 3 8
1 4 8
2 0 5
2 1 5
2 2 5
3 4 6
3 5 6
4 7 10
所以我可以对具有相同“数字”
的元素求和'值'SELECT number, sum(value)
FROM B
GROUP BY number
表C
number | sum(value)
--------+------------
2 13
3 8
4 14
0 5
1 5
5 6
7 10
我不知道该怎么做,也没有在网上找到任何答案(可能没有找到适当的关键词......) 任何的想法?
答案 0 :(得分:1)
您可以使用generate_series()
执行所需操作。所以,TableB基本上是:
select id, generate_series(starting_number, ending_number - 1, 1) as n, value
from tableA;
您的汇总是:
select n, sum(value)
from (select id, generate_series(starting_number, ending_number - 1, 1) as n, value
from tableA
) a
group by n;