我以以下格式将数据存储在SQLITE3数据库中:
id | ts | data ...
475158|2019-11-12 07:50:00 | ...
所以我以前按日,月,年分组,例如:
SELECT STRFTIME("%Y-%m", ts), SUM(<data in my table>)
FROM ( <my table> )
GROUP BY STRFTIME("%Y-%m", ts)
ORDER BY ts
现在,我想做同样的事情,但是要基于周年纪念日。
例如,如果周年纪念日为2010-11-17,我希望按年份分组结果,但应介于'YYYY'-11-17和'YYYY + 1'-11-16之间
示例:
2017 |sum of data between 2016-11-17 & 2017-11-16
2018 |sum of data between 2017-11-17 & 2018-11-16
2019 |sum of data between 2018-11-17 & 2019-11-16
这容易吗?
答案 0 :(得分:2)
您可以通过以下表达式获得年:
strftime('%Y', ts) + (substr(ts, 6, 5) >= '11-17')
这样做:
select
strftime('%Y', ts) + (substr(ts, 6, 5) >= '11-17') year,
sum(data) total
from tablename
group by year
请参见demo。