将排名和分区查询转换为 SqlAlchemy [英] Convert rank and partition query to SqlAlchemy

查看:43
本文介绍了将排名和分区查询转换为 SqlAlchemy的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I would like to convert the following query to SqlAlchemy, but the documentation isn't very helpful:

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

有什么建议吗?

推荐答案

use over 表达式

use over expression

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
)

这篇关于将排名和分区查询转换为 SqlAlchemy的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆