【发布时间】:2018-08-09 20:17:42
【问题描述】:
假设我有一个包含一列的表,其中包含一些整数值,我想计算该列超过 200 的值的百分比。
这是关键,如果我可以在一个可以使用 group_by 的查询中完成它,我更愿意。
results = db.session.query(
ClassA.some_variable,
label('entries', func.count(ClassA.some_variable)),
label('percent', *no clue*)
).filter(ClassA.value.isnot(None)).group_by(ClassA.some_variable)
另外,最好不要在客户端进行百分比计算,比如这样。
results = db.session.query(
ClassA.some_variable,
label('entries', func.count(ClassA.some_variable)),
label('total_count', func.count(ClassA.value)),
label('over_200_count', func.count(ClassA.value > 200)),
).filter(ClassA.value.isnot(None)).group_by(ClassA.some_variable)
但我显然无法在 count statemenet 中进行过滤,也无法在查询结束时应用过滤器,因为如果我在最后应用 > 200 约束,total_count 将不起作用。
也可以选择使用 RAW SQL,不一定非要使用 Sqlalchemy
【问题讨论】:
-
您使用的是哪个数据库?
-
MariaDB @IljaEverilä
标签: python sql sqlalchemy flask-sqlalchemy