SQLite 选择查询返回每个月的最后一行

问题描述 投票:0回答:1

已经在这个问题上摸索太久了。我尝试了使用子查询、

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
查询可以生成上面的三行?

sql sqlite select
1个回答
0
投票

使用 SUSBSTR() 从日期中仅提取年份和月份:

SELECT MAX(date), quantity
FROM summary
GROUP BY SUBSTR(date, 0, 8);
© www.soinside.com 2019 - 2024. All rights reserved.