好吧,所以我试图建立一个restAPI来使用Flask和SQLAlchemy来跟踪扑克统计数据。该数据库具有3个表:玩家,游戏和值,其中的值表用于将玩家和游戏联系在一起。 (值类别如下所示)
我一直坚持尝试编写一种方法,该方法可以计算出在所有已玩游戏中哪个玩家的利润最高。 (很明显,我希望该方法返回玩家ID和利润金额)
在纸上,这可以通过以下方式完成:
下面显示的方法代码为我提供了大部分帮助,但我走不了最后一步。目前,子查询2的结果本身就是最高的利润金额,但是我无法获得它来返回与其关联的玩家ID。 感觉我一定很接近。任何帮助表示赞赏。干杯。
类代码:
class Value(db.Model):
__table_args__ = (db.UniqueConstraint('game_id', 'player_id', name='One_value_per_player_per_game'),)
id = db.Column(db.Integer, primary_key=True)
player_id = db.Column(db.Integer, db.ForeignKey('player.id'), nullable=False)
game_id = db.Column(db.Integer, db.ForeignKey('game.id'), nullable=False)
buy_in_amount = db.Column(db.Float, nullable=False)
buy_out_amount = db.Column(db.Float, nullable=False)
方法代码:
subquery = Value.query.with_entities(Value.player_id.label('id'),
func.sum(Value.buy_out_amount - Value.buy_in_amount).label('total_profit')).group_by(Value.player_id).subquery()
subquery2 = Value.query.with_entities(func.Max(subquery.c.total_profit)).all()