已经在这个问题上摸索太久了。我尝试了使用子查询、
max
函数、group by having
和union left join
的各种方法。
还可以在这里阅读许多答案,解决 - 类似 - 但不完全相同的问题。或者,它们使用 SQLite 中不可用的功能(例如过程逻辑)来解决。
下表是由该查询生成的:
select strftime(' %Y-%m-%d', datetime(timestamp, 'unixepoch')) as date, quantity from summary order by date
日期 | 数量 |
---|---|
2015-07-20 | 346 |
2015-07-30 | 688 |
2015-07-31 | 1222 |
2015-08-02 | 1291 |
2015-08-12 | 1416 |
2015-08-28 | 1618 |
2015-09-01 | 1618 |
2015-09-11 | 1804 |
2015-09-29 | 1846 |
期望的结果集是按月最后一个日期的数量。日期可能有所不同。鉴于上表,它将是三行,对应于七月、八月和九月:
日期 | 数量 |
---|---|
2015-07-31 | 1222 |
2015-08-28 | 1618 |
2015-09-29 | 1846 |
有没有一个
select
查询可以生成上面的三行?
使用 SUSBSTR() 从日期中仅提取年份和月份:
SELECT MAX(date), quantity
FROM summary
GROUP BY SUBSTR(date, 0, 8);