【问题标题】:Grouping by hour in SQLAlchemy在 SQLAlchemy 中按小时分组
【发布时间】:2021-10-26 10:08:14
【问题描述】:

我正在尝试从数据库中获取每小时的平均值。数据如下所示:

我的查询如下所示:

resultset = DBSession.query(dlog.time, 
    func.avg(dlog.value).label("value"),
    func.avg(dlog.minimum).label("minimum"),
    func.avg(dlog.maximum).label("maximum"))\
    .filter(dlog.time >= startObject, dlog.time <= endObject, dpoint.name == n)\
    .group_by(func.date_format(dlog.time, '%H'))\
    .join(dpoint, dpoint.point_id==dlog.point_id)\
    .all()

这样做的问题是,虽然它得到每小时的平均值,但它也会从 第二天开始对同一小时进行分组。 所以如果我想要两天的数据,每小时分组(48 48 小时的项目),我得到 1 天的数据,其中有 2 天的数据组合在一起。

【问题讨论】:

  • 按日期+小时格式分组,基本上只去掉整个时间格式的分秒

标签: python sql sqlalchemy


【解决方案1】:

您可以尝试按天按小时分组作为您的按键分组.. 这样它将对该小时的所有分钟进行分组

resultset = DBSession.query(dlog.time, 
func.avg(dlog.value).label("value"),
func.avg(dlog.minimum).label("minimum"),
func.avg(dlog.maximum).label("maximum"))\
.filter(dlog.time >= startObject, dlog.time <= endObject, dpoint.name == n)\
.group_by(func.date_format(dlog.time, '%Y-%M-%D %H'))\
.join(dpoint, dpoint.point_id==dlog.point_id)\
.all()

【讨论】:

    猜你喜欢
    • 2011-01-07
    • 2022-01-16
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多