SQLite组按非日历月(从一个月的第10个月到下个月的第10个)

时间:2012-08-07 17:47:01

标签: android database sqlite group-by

我是一名Android程序员,我在我的应用程序中使用SQLite(没有太多选择:))。 我有一个表,其中包含一个unix时间戳字段。现在,如果我想在这个表格中计算一些字段的总和,并按月分组,我只是这样做:

选择月,年,总和(x) 来自foo GROUP BY月,年

(当然月份和年份是日期函数)。

但是我想把它按非日历月分组,比如从一个月的10号开始到跟在他后面的第10个月。

我对SQL有一个非常基本的知识,所以我不知道如何做到这一点。 有人告诉我,我需要使用PARTITION BY,但SQLite不支持它。 我很确定有办法做到这一点。

提前致谢, ELAD

1 个答案:

答案 0 :(得分:2)

要处理当月的十分之一,您可以从该日期开始减去10天:

select strftime("%y %m", tendaysbefore), <whatever>
from (select foo.*,
             date(thedate, '-10 days') as tendaysbefore
      from foo
     ) t
group by strftime("%Y-%m", tendaysbefore)
order by 1, 2

您可以将年份和月份放在单独的列中。这个例子将它们放在一列中。