我用來通過ORM來做Django查詢,但我得到的代碼使用了所有的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代碼中執行此操作嗎?
更新
我需要真正聚集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中編寫時,但獲取遊標並調用執行Sheesh可能根本不會使用djang。無論如何要回答你的問題。用總數 – e4c5