我有一些MySQL的代碼看起來像這樣:Django的總和與計數
SELECT
visitor AS team,
COUNT(*) AS rg,
SUM(vscore>hscore) AS rw,
SUM(vscore<hscore) AS rl
FROM `gamelog` WHERE status='Final'
AND date(start_et) BETWEEN %s AND %s GROUP BY visitor
我想翻譯成查詢的Django的版本,未做多個查詢。這可能嗎?我讀了如何做Sum()
和Count()
,但它似乎並沒有工作,當我想比較像我在做的兩個領域。
這是我能想出迄今最好的,但它沒有工作......
vrecord = GameLog.objects.filter(start_et__range=[start,end],visitor=i['id']
).aggregate(
Sum('vscore'>'hscore'),
Count('vscore'>'hscore'))
我也有使用'vscore>hscore'
試過了,但也不能工作。有任何想法嗎?我需要儘可能少地使用查詢。
即時猜測你'vscore'和'hscore'爲您示範田?你必須做一個'filter(vscore__gt = hscore)'並計算總和,我相信,但如果你想少做SQL查詢,我會使用'.extra()'並自己提供原始的sql。它會更加優化。 – 2013-04-26 12:59:36
感謝limelights,我可能會這樣做。我真的不想使用原始SQL,但我想沒有其他辦法。 – Zamphatta 2013-04-26 14:48:02