`sum`、`average`、`min`、`max` 的 sqlalchemy 简单示例

Posted

技术标签:

【中文标题】`sum`、`average`、`min`、`max` 的 sqlalchemy 简单示例【英文标题】:sqlalchemy simple example of `sum`, `average`, `min`, `max` 【发布时间】:2012-08-06 15:10:41 【问题描述】:

对于sqlalchemy,谁能温柔地给出SQL 函数的简单示例,例如sumaverageminmax,用于列(score 在以下为例)。

至于这个映射器:

class Score(Base):
    #...
    name = Column(String)
    score= Column(Integer)
    #...

【问题讨论】:

【参考方案1】:

有关用法,请参阅SQL Expression Language Tutorial。下面的代码展示了用法:

from sqlalchemy.sql import func
qry = session.query(func.max(Score.score).label("max_score"), 
                    func.sum(Score.score).label("total_score"),
                    )
qry = qry.group_by(Score.name)
for _res in qry.all():
    print _res

【讨论】:

这是否与 SQL 不同,正确处理空集的求和,即返回 0 而不是 NULL 它使用各自的 SQL 函数以及它们的所有优点和缺点。 可惜了。像this 这样的东西应该可以工作。 链接已损坏。最新:docs.sqlalchemy.org/en/latest/core/tutorial.html SQLAlchemy 文档中的一些很好的例子展示了如何更好地控制生成 SQL:docs.sqlalchemy.org/en/latest/orm/tutorial.html#counting【参考方案2】:

来自SQLAlchemy docs,对于sum方法,我们需要使用functions.sum()。如我们所见:

from sqlalchemy.sql import functions

result = session.query(
    functions.sum(Model.value_a + Model.value_b)
).scalar()

这将产生一个类似的 sql:

SELECT sum(public.model.value_a + public.model.value_b) AS sum_1 ...

【讨论】:

以上是关于`sum`、`average`、`min`、`max` 的 sqlalchemy 简单示例的主要内容,如果未能解决你的问题,请参考以下文章

AR模型MA(Moving Average)模型ARMA模型时间序列的定阶ARIMASARIMAX

(转)滑动平均法滑动平均模型算法(Moving average,MA)

LeetCode 813. Largest Sum of Averages

附加题

如何根据与该 groupby SUM 的 AVERAGE 进行比较的 groupby SUM 进行选择

如何仅提取线程组的 Min Max 和 Average