【问题标题】:sqlalchemy: get max/min/avg values from a tablesqlalchemy:从表中获取最大/最小/平均值
【发布时间】:2022-02-17 16:22:43
【问题描述】:

我有这个问题:

mps =   (
            session.query(mps)  .filter_by(idc = int(c.idc))
                                .filter_by(idmp = int(m.idmp))
                                .group_by(func.day(mps.tschecked))
        ).all()

我的问题是,我不知道如何(使用 sqlalchemy)从表中提取 max/min/avg 值...

我发现这个:Database-Independent MAX() Function in SQLAlchemy

但是我不知道在哪里使用这个 func.max/min/avg...

谁能告诉我怎么做?可以举个例子吗?

【问题讨论】:

  • 你不把上面的改成session.query(func.avg(mps.some_column)).filter...吗?我没有尝试过,也没有使用过 sqlalchemy,但这似乎是您提供的链接的明显结论。不行吗?
  • 它可以工作,但是我需要调用像 mps[0] 这样的值,而不是 mps.tschecked... 这可以用不同的方式完成吗?
  • mps 在您的代码中至少有两个不同的东西。你为什么这样做?结果在文档sqlalchemy.org/docs/core/… 中进行了描述 - 您可以使用索引、名称或列对象
  • 好的,现在我明白了... tnx 为您提供时间/帮助!

标签: python sqlalchemy


【解决方案1】:

from sqlalchemy import func 提供以下功能:

  • func.min
  • func.max
  • func.avg

文档可用here

您可以在 query() 方法中使用它们。

例子:

session.query(self.stats.c.ID, func.max(self.stats.c.STA_DATE))

(就像在普通 SQL 中使用聚合函数一样)

【讨论】:

【解决方案2】:

或者只使用 order_by() 并选择第一个或最后一个元素。 . .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2017-12-15
    • 2021-11-02
    相关资源
    最近更新 更多