as the query is FULL OUTER JOINING bootresourcefilesync and the `files_size` are duplicated on multiple rows depending on the number of bootresourcefilesync records.
>>> print(b.sets.order_by("-id").annotate(files_count=Count("files__id", distinct=True),files_size=Sum("files__size"),sync_size=Sum("files__bootresourcefilesync__size"),).query)
SELECT "maasserver_bootresourceset"."id", "maasserver_bootresourceset"."created", "maasserver_bootresourceset"."updated", "maasserver_bootresourceset"."resource_id", "maasserver_bootresourceset"."version", "maasserver_bootresourceset"."label", COUNT(DISTINCT "maasserver_bootresourcefile"."id") AS "files_count", SUM("maasserver_bootresourcefile"."size") AS "files_size", SUM("maasserver_bootresourcefilesync"."size") AS "sync_size" FROM "maasserver_bootresourceset" LEFT OUTER JOIN "maasserver_bootresourcefile" ON ("maasserver_bootresourceset"."id" = "maasserver_bootresourcefile"."resource_set_id") LEFT OUTER JOIN "maasserver_bootresourcefilesync" ON ("maasserver_bootresourcefile"."id" = "maasserver_bootresourcefilesync"."file_id") WHERE "maasserver_bootresourceset"."resource_id" = 6 GROUP BY "maasserver_bootresourceset"."id" ORDER BY "maasserver_bootresourceset"."id" DESC
The issue is here
)
as the query is FULL OUTER JOINING bootresourcefil esync and the `files_size` are duplicated on multiple rows depending on the number of bootresourcefil esync records.
>>> print(b. sets.order_ by("-id" ).annotate( files_count= Count(" files__ id", distinct= True),files_ size=Sum( "files_ _size") ,sync_size= Sum("files_ _bootresourcefi lesync_ _size") ,).query) bootresourceset "."id", "maasserver_ bootresourceset "."created" , "maasserver_ bootresourceset "."updated" , "maasserver_ bootresourceset "."resource_ id", "maasserver_ bootresourceset "."version" , "maasserver_ bootresourceset "."label" , COUNT(DISTINCT "maasserver_ bootresourcefil e"."id" ) AS "files_count", SUM("maasserver _bootresourcefi le"."size" ) AS "files_size", SUM("maasserver _bootresourcefi lesync" ."size" ) AS "sync_size" FROM "maasserver_ bootresourceset " LEFT OUTER JOIN "maasserver_ bootresourcefil e" ON ("maasserver_ bootresourceset "."id" = "maasserver_ bootresourcefil e"."resource_ set_id" ) LEFT OUTER JOIN "maasserver_ bootresourcefil esync" ON ("maasserver_ bootresourcefil e"."id" = "maasserver_ bootresourcefil esync". "file_id" ) WHERE "maasserver_ bootresourceset "."resource_ id" = 6 GROUP BY "maasserver_ bootresourceset "."id" ORDER BY "maasserver_ bootresourceset "."id" DESC
SELECT "maasserver_