SQLAlchemy 子查询 - 总和的平均值

Posted

技术标签:

【中文标题】SQLAlchemy 子查询 - 总和的平均值【英文标题】:SQLAlchemy subquery - average of sums 【发布时间】:2010-02-16 13:21:39 【问题描述】:

有没有什么方法可以在 SQLAlchemy ORM 中编写如下 SQL 语句:

SELECT AVG(a1) FROM (SELECT sum(irterm.n) AS a1 FROM irterm GROUP BY irterm.item_id);

谢谢

【问题讨论】:

【参考方案1】:
sums = session.query(func.sum(Irterm.n).label('a1')).group_by(Irterm.item_id).subquery()
average = session.query(func.avg(sums.c.a1)).scalar()

【讨论】:

你为什么在查询 sums.c.a1 中写而不是 sums.a1?不知道效果如何 @Guido sums 是子查询对象,而不是映射类。它通过ccolumns 属性公开其可用列。

以上是关于SQLAlchemy 子查询 - 总和的平均值的主要内容,如果未能解决你的问题,请参考以下文章

一个查询中总和的平均值

需要帮助构建 SQLAlchemy 查询 + 子查询

子查询中的 sqlalchemy 表冒泡到外部查询中

简单子查询的混淆 SQLAlchemy 转换

SQLAlchemy 子查询列表对象没有属性

SQL:当某些月份没有记录时,如何查询每月总和的平均值?