﻿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	nobody	"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."	Uncategorized	new	Database layer (models, ORM)	4.0	Normal				Unreviewed	0	0	0	0	0	0
