﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
33403	Annotate results change when filtering *after* the annotate	karyon	Abhinav Yadav	"Publisher A has two books with each 100 pages.


{{{
Publisher.objects.annotate(Sum(""books__pages""))
}}}

will give you 200 as the sum. However, adding a filter after the annotate

{{{
Publisher.objects.annotate(Sum(""books__pages"")).filter(books__in=Books.objects.all())
}}}
 
will give you 400. (apparently that's the correct sum 200 multiplied by the number of books of that publisher)

I understand that joins in annotates can produce incorrect results, akin to the one documented here: [https://docs.djangoproject.com/en/4.0/topics/db/aggregation/#combining-multiple-aggregations #combining-multiple-aggregations]. However, the docs there say only ""Combining multiple aggregations with annotate() will yield the wrong results"", and here I'm not combining multiple aggregations. Furthermore, [https://docs.djangoproject.com/en/4.0/topics/db/aggregation/#order-of-annotate-and-filter-clauses #order-of-annotate-and-filter-clauses] says ""When an annotate() clause is applied to a query, the annotation is computed over the state of the query up to the point where the annotation is requested."", which further made me believe this should actually work. "	Cleanup/optimization	closed	Database layer (models, ORM)	4.0	Normal	duplicate		karyon	Accepted	1	0	0	0	0	0
