Получение логической ошибки в запросе Django ORM, итог не совпадает с подсчетами всех возрастных групп
Вопрос: Пожалуйста, посмотрите на этот запрос. Я получаю неправильный результат, Когда я складываю все подсчеты различных возрастных групп, подсчет отличается от общего подсчета, т.е. подсчет возрастной группы от (0, ...), Я показываю вам результат ниже, чтобы вы могли вычислить.
"old": [
{
"gender": 1,
"0-9": 64,
"10-14": 37,
"15-19": 24,
"20-59": 507,
"60-69": 206,
">70": 380,
"total": 1218
},
{
"gender": 2,
"0-9": 39,
"10-14": 20,
"15-19": 41,
"20-59": 885,
"60-69": 294,
">70": 418,
"total": 1693
}
],
"new": [
{
"gender": 1,
"0-9": 1171,
"10-14": 550,
"15-19": 486,
"20-59": 2152,
"60-69": 577,
">70": 587,
"total": 5203
},
{
"gender": 3,
"0-9": 0,
"10-14": 0,
"15-19": 0,
"20-59": 3,
"60-69": 0,
">70": 0,
"total": 3
},
{
"gender": 2,
"0-9": 948,
"10-14": 452,
"15-19": 898,
"20-59": 6019,
"60-69": 997,
">70": 867,
"total": 9385
}
]
}
Я думаю, что проблема в вычислении возраста внутри queryset, либо определенный возраст повторяется дважды, либо не включается. Я не знаю, что происходит. Пожалуйста, помогите мне решить эту проблему.
ans + , я добавил full_name в значениях, я получил результат, где конкретный был добавлен в две возрастные группы. позвольте мне показать вам.
Вот код, который я изменил:
queryset_new = (
CustomerVisit.objects.filter(follow_up_visit=False).annotate(
age = (ExtractYear("created_date_ad") - ExtractYear("customer__user__dob_date_ad")) +
(ExtractMonth("created_date_ad") - ExtractMonth("customer__user__dob_date_ad")) / 12 +
(ExtractDay("created_date_ad") - ExtractDay("customer__user__dob_date_ad")) / 365,
gender=F("customer__user__gender"),
full_name=F("customer__user__full_name"),
)
.values("gender", "full_name")
.annotate(**aggr_query)
).filter(**query_dict)
Вот вывод, который я получил, и я был шокирован, что один и тот же человек добавляется в 3 возрастные группы. Я совсем запутался, пожалуйста, помогите мне разобраться. Я думаю, что проблема в вычислении возраста.
{
"gender": 2,
"fullName": "Asmita Tamrakar",
"0-9": 0,
"10-14": 1,
"15-19": 1,
"20-59": 1,
"60-69": 0,
">70": 0,
"total": 2
},
если вам нужна дополнительная информация, пожалуйста, дайте мне знать.