具有Null值的列上的SQLAlchemy Max值。

时间:2014-09-19 21:12:52

标签: python mysql sqlalchemy

我有一份价值清单。我试图找到每个ID的最大值。其中Null是所有值的最大值。

ID   DATE     

1     '2013-01-26'
1     NULL
1     '2013-03-03'      
2     '2013-02-23'      
2     '2013-04-12'      
2     '2013-05-02'   

我想得到这个

ID   DATE     

1     NULL    
2     '2013-05-02'  

我知道如何在mysql中完成它。通过这样做

select ID, max(IFNULL(DATE,'3000-01-01'))
from test
group by ID

我想找到sqlalchemy版本。

这假设Null为最小值。

db_session.query(test, func.max(test.DATE)).group_by(test.ID).all()

1 个答案:

答案 0 :(得分:3)

这很简单:

from datetime import date


# your query
res = session.query(
    Test,
    func.max(func.ifnull(Test.date, date(3000, 1, 1)))
).group_by(Test.id).all()

注意:您也可以使用COALESCECOALESCE是标准sql的一部分,它受到更多数据库的支持。 使用COALESCE的查询示例:

res = session.query(
    Test,
    func.max(func.coalesce(Test.date, date(3000, 1, 1)))
).group_by(Test.id).all()