You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Page模型计算数据库所有页面访问量及算术平均值

Page模型全表访问量算术平均值计算方案

我们优先使用数据库层面的聚合能力完成计算,避免拉取全表数据到内存计算导致的性能损耗,以下是基于Django ORM的实现方法:

方法1:直接调用内置Avg聚合(推荐)

直接使用Django封装好的平均值聚合函数,代码最简洁,性能最优:

# 先导入依赖
from django.db.models import Avg
from .models import Page

# 执行聚合查询
avg_result = Page.objects.aggregate(avg_visits=Avg("visits_count"))
avg_visits = avg_result["avg_visits"]

说明:

  • 若Page表无数据,返回的avg_visits为None,可根据业务需求补充默认值
  • 默认统计逻辑会自动跳过visits_count为NULL的页面,如果需要把这类页面的访问量按0计算,可以使用Coalesce函数处理空值:
from django.db.models import Avg, Value
from django.db.models.functions import Coalesce

avg_visits = Page.objects.aggregate(
    avg_visits=Avg(Coalesce("visits_count", Value(0)))
)["avg_visits"]

方法2:手动计算总访问量/页面数(适配多指标统计场景)

如果需要同时拿到总访问量、页面总数等其他指标,可以分开聚合后手动计算平均值:

from django.db.models import Sum, Count
from .models import Page

stat = Page.objects.aggregate(total_visits=Sum("visits_count"), page_count=Count("id"))
total = stat["total_visits"] or 0
count = stat["page_count"] or 0
avg_visits = total / count if count > 0 else 0

注意:禁止使用遍历全表实例的方式计算平均值,数据量较大时会严重占用内存、拉长查询耗时,所有统计类操作优先走数据库聚合能力。

内容的提问来源于stack exchange,提问作者Muhsin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:42:02