Я использую Django-запросы через ORM, но код, который мне предоставляется, использует весь SQL.Основная функция SQL
Мне нужно уметь получить общую сумму всех транзакций суммировано для определенного агента, определенного в диапазоне дат.
cursor = connection.cursor()
cursor.execute(
"""
SELECT a.*, COUNT(t.*) as transactions
FROM agent a
JOIN transaction t ON t.agent_id = a.id
WHERE t.date_created >= %s AND t.date_created < %s and t.status in %s AND a.state = %s
GROUP BY a.id
""", [startdate, enddate, config.TX_STATUSES, selectedstate])
context['agents'] = util.raw_query_dict(cursor)
Если я использую Django ORM, я использовал бы .aggregate(Sum(...))
и объединить, что агрегированные стоимость транзакций для каждого агента.
Могу ли я сделать это в коде SQL?
Update
мне нужно на самом деле агрегировать сумму определенного поля Transaction
модели.
class Transaction(models.Model):
source_amount = MoneyField(max_digits=10, decimal_places=2, default_currency='USD')
Прямо сейчас, это SQL-запрос, который @ C14L предложил дает мне общее количество сделок, которые относятся к конкретному агенту между временем. Мне нужна общая сумма полей source_amount, которые были добавлены вместе, которые находятся в модели Transaction
, как показано выше. Как я могу это достичь?
Убежать оттуда! Хорошо выполнять необработанные запросы с помощью MyModel.objects.raw(), когда один и тот же запрос трудно записать в ORM, но получение курсора и вызов execute Sheesh могут также не использовать djang вообще. В любом случае, чтобы ответить на ваш вопрос. замените это число на сумму – e4c5