你好,我有一些记录:
date Money
1/6/2014 100
12/6/2014 2200
13/6/2014 500
1/3/2014 100
2/5/2014 2200
30/5/2014 500
30/6/2014 100
23/6/2014 2200
31/6/2014 500
好吧,我有一个参数,它的日期例如我需要7月30日的所有记录,但我需要记录的总和,如果非常容易
select sum(money) from info where date <= param
group by month
但是现在我需要按月的所有记录组,但我每个月需要每15个月来降低我需要的结果中的参数,例如
param = 30/6/2014
我希望得到的结果:
15/6/2014 sum(money)
15/5/2014 sum(money)
15/4/2014 sum(money)
我需要每月15个月的记录
答案 0 :(得分:1)
问题是如何将其安排到15日之前的一个月以及从16日开始的日期是在下个月。您可以通过减去15天来完成此操作。这使得所有日子都在上个月的1-15之间。然后,添加一个月。这是Postgres的一种方法:
select to_char(date - 15 * interval '1 day' + interval '1 month', 'YYYY-MM') as mon,
sum(money)
from info
where date <= param
group by to_char(date - 15 * interval '1 day' + interval '1 month', 'YYYY-MM')
order by 1;
编辑:
如果您想要从15到15月,那么您可以这样做:
select to_char(date, 'YYYY-MM') as mon,
sum(money)
from info
where extract(day from date) <= param
group by to_char(date, 'YYYY-MM')
order by 1;
或者,如果只是一个月:
select sum(money)
from info
where to_char(date, 'YYYY-MM') = to_char(param, 'YYYY-MM') and
date <= param;