Django,获取最后一天的总和?
Django, get sum of amount for the last day?
class Point(models.Model):
user = models.ForeignKey(User)
expire_date = models.DateField()
amount = models.IntegerField()
我想知道给定用户
最后expire_date的总金额
一个用户可能有多个 points
并且具有相同的 expire_date
我可以做两个查询来获得 first last expire_date
和 aggregate
。但想知道有没有更好的办法
我们可以在这里使用子查询:
from django.db.models import Sum
Point.objects.filter(
expire_date__gte=Point.objects.order_by('-expire_date').values('expire_date')[:1]
).aggregate(total=Sum('amount'))
这将导致如下查询:
SELECT SUM(point.amount) AS total
FROM point
WHERE point.expire_date >= (
SELECT U0.expire_date
FROM point U0
ORDER BY U0.expire_date DESC
LIMIT 1
)
我还没有对它进行 运行 性能测试,所以我建议您先尝试测量这是否会显着提高性能。
class Point(models.Model):
user = models.ForeignKey(User)
expire_date = models.DateField()
amount = models.IntegerField()
我想知道给定用户
最后expire_date的总金额一个用户可能有多个 points
并且具有相同的 expire_date
我可以做两个查询来获得 first last expire_date
和 aggregate
。但想知道有没有更好的办法
我们可以在这里使用子查询:
from django.db.models import Sum
Point.objects.filter(
expire_date__gte=Point.objects.order_by('-expire_date').values('expire_date')[:1]
).aggregate(total=Sum('amount'))
这将导致如下查询:
SELECT SUM(point.amount) AS total
FROM point
WHERE point.expire_date >= (
SELECT U0.expire_date
FROM point U0
ORDER BY U0.expire_date DESC
LIMIT 1
)
我还没有对它进行 运行 性能测试,所以我建议您先尝试测量这是否会显着提高性能。