python - 为什么使用聚合来查找平均值而不是在 django 中使用 tutal_sum/n

这里我们使用聚合计算

>>> avg = Book.objects.aggregate(average_price=Avg('price'))
{'average_price': 34.35}

但是为什么我们不在上面使用下面的概念。

a = Books.objects.all()
Avg = sum([x.price for x in a])/len(a)
34.35

我想知道使用聚合而不是第二个过程。

最佳答案

Book.objects.aggregate(average_price=Avg('price')) - 这将转换为等效的 SQL 查询并在数据库上执行并直接获取聚合数据。这样更快。

而使用第二种方法

  • 你从数据库中获取所有对象,
  • 使用 sum() 计算价格总和,然后
  • 使用 len() 找到 a 的长度,然后
  • 使用除法得到结果。

第二种方法比第一种方法有更多的开销,因为涉及函数调用、执行除法、将对象加载到列表等,

https://stackoverflow.com/questions/68126336/

相关文章:

algorithm - K个桶中N个对象的所有可能组合

github-actions - 如何获取用户名,负责在 github 操作中触发工作流

kubernetes - 无法使用 Terraform 为 AKS 集群创建命名空间,报告没有此类主

pandas - 设置 pandas 索引单元格的背景颜色

c++ - 尝试将函数作为参数传递时出现 "no suitable constructor exis

node.js - 如何使用 cmd 更新 Node.js?

python - 如何在 python 中从 json 获取输入的随机回复

flutter - 如何将 'Function' 类型的参数分配给 'void Function()

linux - 如何从第二行使用 awk '{print $1*Number}' 或告诉他忽略 Na

android - 使用导航组件为每个 fragment 自定义工具栏