Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Django/Postgres:RangeField上的聚合_Sql_Django_Postgresql_Aggregate Functions_Django Orm - Fatal编程技术网

Sql Django/Postgres:RangeField上的聚合

Sql Django/Postgres:RangeField上的聚合,sql,django,postgresql,aggregate-functions,django-orm,Sql,Django,Postgresql,Aggregate Functions,Django Orm,是否可以在Django的RangeField上执行聚合功能 假设我们有3个对象具有bigingerfieldprice\u范围 第一个目标:价格范围=[105000] 第二个目标:价格范围=[15000] 第三个目标:价格范围=[1009000] 这三个对象的Max和Min聚合结果为: min=1和max=9000 我试图通过以下方式聚合Max和Min: MyModel.objects.aggregate(Min('price_range'),Max('price_range'),) 这会引起

是否可以在
Django
RangeField
上执行聚合功能

假设我们有3个对象具有
bigingerfield
price\u范围

第一个目标:
价格范围=[105000]

第二个目标:
价格范围=[15000]

第三个目标:
价格范围=[1009000]

这三个对象的
Max
Min
聚合结果为:

min=1
max=9000

我试图通过以下方式聚合
Max
Min

MyModel.objects.aggregate(Min('price_range'),Max('price_range'),)
这会引起错误:

编程错误:函数min(int8range)不存在第1行: 从“应用程序”中选择最小值(“应用程序我的模型”,“价格范围”)作为“价格范围最小值”


您可以使用
上限(…)
下限(…)
获得范围边界,因此:

from django.db.models.functions import Upper, Lower

MyModel.objects.aggregate(Min(Lower('price_range')), Max(Upper('price_range')))

如果两者不重叠呢?比如
[1,5]
[8,10]
?@WillemVanOnsem这没关系。我想得到最低下限和最高上限。是的,这正是我想要的。这是为了过滤的目的。感谢几年后遇到这个答案,Django(3.0.6)给我一个
TypeError:复杂表达式需要一个别名
。在我的指导下,我需要执行与
MyModel.objects.aggregate(lower=Min(lower('price\u range')),upper=Max(upper('price\u range'))等效的操作。
from django.db.models.functions import Upper, Lower

MyModel.objects.aggregate(
    low=Min(Lower('price_range')),
    high=Max(Upper('price_range'))
)