Получение логической ошибки в запросе 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
},

если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Вернуться на верх