python - 如何结合子查询、最大记录的排序和分组?
问题描述
我有下表用于记录每场比赛的运动员指标:
class MatchResult(Base):
__tablename__ = 'match_result'
id = Column(Integer, primary_key=True)
p1_id= Column(Integer, index=True)
p1_metric = Column(Float)
p2_id= Column(Integer, index=True)
p2_metric = Column(Float)
我想获得每个唯一玩家 ID(无论是 p1 还是 p2)的最大指标,并按指标排序。
据我所知:
p1 = session.query(
MatchResult.p1_id.label("player_id"),
MatchResult.p1_metric.label("metric")
).subquery()
p2 = session.query(
MatchResult.p2_id.label("player_id"),
MatchResult.p2_metric.label("metric")
).subquery()
union = p1.union(p2)
upset = session.query(
union.c.player_id,
func.max(union.c.metric).label("max_metric")
)
upset = upset.group_by(union.c.player_id)
upset = upset.order_by(union.c.max_metric)
但是我遇到了一个问题,我无法合并两个子查询,所以我得到了错误:
AttributeError: 'Alias' object has no attribute 'union'
我将如何解决这个问题?
解决方案
推荐阅读
- python - Python SQLite3如何将单列连接到多个表中
- python - OSError: [Errno 98] 地址已在使用中 在 Apache2 上运行 Flask 应用程序
- mysql - 使用 DATE_ADD 和 CURRENT_DATE 在表中查找今天发生的事情
- c++ - 如何修复未在范围内声明
- java - 我想得到一行作为标题,其余数据附加在文件中
- vb.net - 将焦点设置在 ListView
- python - 命令引发异常:TypeError:列表索引必须是整数或切片,而不是 str
- python - 从 XML 元素中提取子字符串
- angular - Angular Animation - 尝试将鼠标悬停时的 pause() 和 mouseout 时的 play() 添加到动画可观察数组
- javascript - 我在使用 JavaScript 更改背景图像时遇到问题