﻿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
34551	Case-When aggregation over aggregated fields doesn't work since 4.2	Denis Roldán	nobody	"This same QuerySet was working on 4.1.X and prior versions and stopped working on 4.2.X:


{{{
annotated_users  = users_qs.annotate(
            total_things=Subquery(
                OtherModel.objects.filter(user_id=OuterRef(""pk"")).annotate(
                    total_objs=F(""total"")
                ).values(""total_objs"")
            )
)

annotated_users.aggregate(
            sum_total_objs=Sum(""total_things""),
            avg_conversion_rate=Case(
                When(
                    sum_total_objs=0,
                    then=0,
                ),
                default=Round(
                    (Sum(""sum_total_confirmed_objs"") / Sum(""sum_total_objs"")) * 100, 2
                ),
                output_field=FloatField(),
            )
)
}}}

As you can see `sum_total_objs` is an aggregated field that is also used on a second field to calculate the conversion rate. To avoid a zero division problem, we were using a Case-When clause over that field. It works well on any 4.1 and prior versions but stopped working since 4.2, raising a `FieldError` like: 

`Cannot resolve keyword 'sum_total_objs' into field`

Thanks for the support!"	Bug	new	Database layer (models, ORM)	4.2	Normal		orm, aggregate, case, when, field error, bug		Unreviewed	0	0	0	0	0	0
