Ben*_*ann 5 python mysql sqlalchemy sum subquery
我成功地获得了一个查询,该查询总结了父类的所有子行:
subq = db.session.query(Transaction.budget_id, func.sum(Transaction.amount).label("total"), func.count('*').label("count"))
.group_by(Transaction.budget_id).subquery()
return db.session.query(Budget.ID, Budget.name, Budget.start_date, Budget.end_date, Budget.amount, subq.c.total, subq.c.count)
.outerjoin(subq, Budget.ID==subq.c.budget_id)
.order_by(Budget.start_date.desc()).limit(count)
Run Code Online (Sandbox Code Playgroud)
问题是当预算没有任何交易子类时它不起作用。它返回 None,这给工作带来了麻烦。我希望 sum() 和 count() 函数返回 0。
from sqlalchemy.sql.functions import coalesce
...
return db.session.query(Budget.ID,
Budget.name,
Budget.start_date,
Budget.end_date,
Budget.amount,
coalesce(subq.c.total, 0),
coalesce(subq.c.count, 0))
.outerjoin(subq, Budget.ID==subq.c.budget_id)
.order_by(Budget.start_date.desc()).limit(count)
Run Code Online (Sandbox Code Playgroud)