Вложенный подзапрос в django ORM

Мне нужно преобразовать этот запрос в django, но я не могу понять как.

SELECT SUM(income)
FROM (
  SELECT COUNT(keyword)*
    CASE
        WHEN country='ca' THEN 390
        WHEN country='fi' THEN 290
        WHEN country='it' THEN 280
        WHEN country='nl' THEN 260
        ELSE 250 
    END AS income
    FROM analytics_conversions
    WHERE keyword = 'online'
    AND click_time BETWEEN '2022-06-01' AND '2022-06-30'
GROUP BY country) as _

Сейчас у меня есть этот код, но он возвращает несколько строк. Эти строки должны суммироваться и возвращать только одну строку для использования в подзапросе.

         keywords_conversions_params = {
            'keyword': OuterRef('keyword'),
            'keyword_type': OuterRef('keyword_type')
         }

        keywords_conversions_value = Conversions.objects.filter(
            **keywords_conversions_params).order_by().values('keyword').annotate(
                value=Count('pk') * Case(
                    When(country='ca', then=350),
                    When(country='fi', then=290),
                    When(country='it', then=280),
                    When(country='nl', then=260),
                    default=250
                )).values('value')

Мне удалось решить эту проблему, удалив группировку и просто суммируя значения с условием. Вот исправленный код.

     keywords_conversions_params = {
        'keyword': OuterRef('keyword'),
        'keyword_type': OuterRef('keyword_type')
     }

    keywords_conversions_value = Conversions.objects.filter(
        **keywords_conversions_params).values('keyword').annotate(
            value=Sum(Case(
                When(country='ca', then=350),
                When(country='fi', then=290),
                When(country='it', then=280),
                When(country='nl', then=260),
                default=250
            ))).values('value')
Вернуться на верх