Har*_*mal 6 django union aggregate-functions django-queryset
from django.contrib.postgres.aggregates import ArrayAgg
t1= Table1.objects.values('id')
t2= Table2.objects.values('id')
t3= Table3.objects.values('id')
t = t1.union(t2, t3)
t.aggregate(id1=ArrayAgg('id'))
Run Code Online (Sandbox Code Playgroud)
这会引发错误
{ProgramingError} 列“__col1”不存在
等效的原始 SQL
SELECT array_agg(a.id) from
(
SELECT id FROM table1
UNION
SELECT id FROM table2
UNION
SELECT id FROM table3
) as a
Run Code Online (Sandbox Code Playgroud)
小智 0
聚合函数尝试查找列__col1,但它不存在。因此,使用 F() 对象显式命名列并使用聚合函数:
t1= Table1.objects.values(__col1=F('id'))
t2= Table2.objects.values(__col1=F('id'))
t3= Table3.objects.values(__col1=F('id'))
t = t1.union(t2, t3)
t.aggregate(Avg('id'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2870 次 |
| 最近记录: |