python - 将排名和分区查询转换为 SqlAlchemy

标签 python sql sqlalchemy

我想将以下查询转换为 SqlAlchemy,但文档不是很有帮助:

select * from (
select *, 
RANK() OVER (PARTITION BY id ORDER BY date desc) AS RNK 
from table1
) d
where RNK = 1

有什么建议吗?

最佳答案

使用over表达

from sqlalchemy import func

subquery = db.session.query(
    table1,
    func.rank().over(
        order_by=table1.c.date.desc(),
        partition_by=table1.c.id
    ).label('rnk')
).subquery()

query = db.session.query(subquery).filter(
    subquery.c.rnk==1
)

关于python - 将排名和分区查询转换为 SqlAlchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40635099/

相关文章:

java - 如何像 SQL 中的 ORDER BY 子句一样操作数组?

python - pyodbc autocommit 似乎不适用于 sybase 和 sqlalchemy

python - 将 Python "Mixer"库与带有构造函数参数的 SQL Alchemy 模型一起使用

python - Count_values 具有 where 条件来计算一列相对于其他列的值

python - 始终无法通过重新启动 '' 重新启动 docker 容器''

python - Numba 运行时链接错误

Python,matplotlib - 基于条件变量的图例 -

sql - 在查询中从 GROUP BY 函数中查找多个属性

mysql - SQL WHERE IN with Left Join 没有返回我期望的所有行

python - 使用 Pymssql 将 Python 连接到 MSSQL