我有一些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