获取4天内创建的每组记录中的“顶级”记录

时间:2012-05-07 01:49:52

标签: python sql django

我正在创建一个Django应用程序,其中我有一个包含'items'的表,它们创建的日期以及它们拥有的点数。我想编写一个查询,返回过去4天中得分最多的项目,然后是之前4天内得分最多的项目,依此类推。我想知道如何做到这一点(我对SQL很新,如果这是一个基本问题,我很抱歉)。我想我可以在我的Django视图中迭代获取每组4中的顶级记录,然后组合这些对象,但这需要我为每一组命中数据库,我猜这将是一个糟糕的方式正在做?任何指针都会非常感激!

谢谢!

1 个答案:

答案 0 :(得分:5)

不幸的是,没有办法避免在这里为每个组点击数据库。这应该不是一个大问题,我假设你会限制团体的数量到理智的程度?如果您担心数据库负载,请确保索引“创建日期”和“点数”字段。

您的代码应该类似于:

from datetime import date, timedelta
from models import Item

groups = []
for i in range(0, 10):
    items = Item.objects.filter(date_created=date.today() - timedelta(i))
    groups.append(items.order_by('-points'))