![](/img/trans.png)
[英]Filter Pandas dataframe by most recent date for each unique column value
[英]SQLAlchemy: Select rows, grouped by a date column, whose datetime column is most recent for each date
给定 PostgreSQL 数据库中的下表。
价值 | created_at | 日期 |
---|---|---|
2 | 2022-02-01 01:01:01 | 2022-03-15 |
10 | 2022-02-15 01:01:01 | 2022-03-15 |
5 | 2022-02-02 01:01:01 | 2022-03-16 |
6 | 2022-02-16 01:01:01 | 2022-03-16 |
您如何编写 sqlalchemy 代码:
date
列分组created_at
值上述查询的输出应如下所示:
价值 | created_at | 日期 |
---|---|---|
10 | 2022-02-15 01:01:01 | 2022-03-15 |
6 | 2022-02-16 01:01:01 | 2022-03-16 |
我尝试了以下查询:
query = (
select(
func.max(TABLE.created_at),
TABLE.date,
TABLE.value
)
.group_by(models.TABLE.date)
)
但是得到错误"value" must appear in the GROUP BY clause or be used in an aggregate function
而根据我的理解,使用聚合函数或在 GROUP BY 子句中包含“值”不会提供所需的结果。
我可以使用什么查询来获取所需的行?
我正在寻找独特的条款
query = select(TABLE).distinct(
TABLE.date
).order_by(
TABLE.date,
TABLE.created_at.desc(),
)
我在我正在做的项目中遇到了同样的问题,但是在阅读了有关relationships
和distinct
文档之后,我提出了这个查询。 你也可以这样试试,希望对你有帮助。
query = (
select value, created_at, date, count(distinct(date)) from TABLE group by value, created_at, date
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.