如何在SQLAlchemy中编写此SQL查询?

时间:2014-11-13 06:40:16

标签: python sqlalchemy

我编写了以下SQL查询。我怎样才能在SQLAlchemy中做同样的事情?

SELECT
    T.campaign_id,
    T.spend,
    T.id
FROM activity_log T
WHERE T.end_time = (
    SELECT MAX( T1.end_time ) FROM activity_log T1
    WHERE T1.campaign_id = T.campaign_id and cast(T1.end_time as DATE) = cast(T.end_time as DATE)
);

1 个答案:

答案 0 :(得分:0)

下面应该开始:

T = aliased(ActivityLog, name="T")
T1 = aliased(ActivityLog, name="T1")
subquery = (
    session.query(func.max(T1.end_time).label("end_time"))
    .filter(T1.campaign_id == T.campaign_id)
    .filter(cast(T1.end_time, Date) == cast(T.end_time, Date))
    .correlate(T)
    .as_scalar()
)

qry = (
    session.query(T.campaign_id, T.spend, T.id)
    .filter(T.end_time == subquery)
)