我似乎无法弄清楚如何聚合此表。我需要从这个表中弄清楚一个月汇总的金额是多少。所以我有一些项目和每个项目的持续时间,每月平均收入(每个项目)。例如,我想看看2011年5月所有项目的总金额是多少。这是原始表格:
Year Month Amount Duration (month) average per month
2012 1 7 4 1.75
2012 2 6 5 1.2
2012 3 5 6 0.833333333
2012 4 4 6 0.666666667
2012 5 9 5 1.8
2012 6 10 4 2.5
2012 7 20 3 6.666666667
2011 4 13 2 6.5
2011 3 3 10 0.3
2011 12 4 11 0.363636364
2011 2 5 12 0.416666667
2011 3 7 3 2.333333333
2010 5 8 4 2
2010 7 3 6 0.5
2010 9 4 7 0.571428571
2010 11 5 8 0.625
2010 1 6 8 0.75
2010 2 7 8 0.875
2010 3 8 9 0.888888889
2010 4 9 1 9
我将不胜感激任何帮助。感谢。
答案 0 :(得分:1)
假设年份是varchar和月/持续时间int(如果没有,您可能需要根据需要进行转换),您可以这样做:
select sum(amount) from yourtable
where YearMonth between
period_add(year&'01',month-1) and period_add(year&'01',month+duration-2)
将YearMonth作为要查询的年/月的字符串,在您的示例中为'201105'
多年/月可以创建一列表:
create table yearmonths(yearmonth varchar(6));
insert into yearmonths values
('201101'),('201102'),(201103),
('201104'),('201105'),(201106)
并将其加入您的桌子:
Select yearmonth,sum(amount)
from yearmonths y
left join yourtable t
on(y.yearmonth between period_add(year&'01',month-1)and period_add(year&'01',month+duration-2)
group by yearmonth