微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在按语句分组后返回记录计数的平均值

如何解决在按语句分组后返回记录计数的平均值

这是答案

在您的情况下,使用提供的表定义:

from sqlalchemy import cast, func
from sqlalchemy.types import TIME, DATE
from sqlalchemy.sql import between

time_from = ...  # get filter time maybe using datetime.time()
time_to = ...  # idem
counts = session.query(func.count('*').label('count')).\
    filter(between(cast(MyClass.created, TIME),
           time_from,
           time_to)).\
    group_by(cast(MyClass.created, DATE))

avg = session.query(func.avg(counts.subquery().columns.count)).scalar()

print avg

解决方法

我有一堆记录,我想针对这些记录计算某些时间单位(小时,天,周)的平均计数。因此,一种情况是我想计算每天在给定范围内的平均记录数。更清楚地说,这只是一个数字。

我现在正在执行的方式(显然不起作用,因为它没有取平均值),是以下sqlalchemy查询:

db.query(MyClass).filter(MyClass.created.between(start_date,end_date)).group_by(func.HOUR(MyClass.created)).count()

这是输出到SHOW CREATE TABLE yt_video

| yt_video | CREATE TABLE `yt_video` (
  `id` int(11) NOT NULL AUTO_INCREMENT,`version` int(11) DEFAULT NULL,`created` datetime DEFAULT NULL,`published_date` date DEFAULT NULL,`yt_data` text,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |

我真正关心的只是创建的时间戳,但希望对您有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。