django orm 分类统计求和并排名

有一个表 top1brand sales1 top2brand sales2 top3brand sales 3 city 李宁 10000 耐克 8000 阿迪 7000 上海 耐克 20000 特步 10000 回力 3000 上海 求上海地区,排名销售排名前三的品牌 有啥好的思路?

假设你这个表结构如下:
top1brand sales1 top2brand sales2 top3brand sales3 city
李宁 10000 耐克 8000 阿迪 7000 上海 
耐克 20000 特步 10000 回力 3000 上海

也就是

class S(models.Model):
    top1brand = models.CharField(max_length=4)
    sales1 = models.IntegerField(default=0)
    top2brand = models.CharField(max_length=4)
    sales2 = models.IntegerField(default=0)
    top3brand = models.CharField(max_length=4)
    sales3 = models.IntegerField(default=0)

那么我建议可以这样,用以下三条分别取出
sales_1 sales_2 sales_3 的前三,最后再做一个对比。

S.objects.filter(city='上海').values('top1brand').order_by().annotate(Sum('sales1')).order_by('-sales1__sum')
S.objects.filter(city='上海').values('top2brand').order_by().annotate(Sum('sales2')).order_by('-sales2__sum')
S.objects.filter(city='上海').values('top3brand').order_by().annotate(Sum('sales3')).order_by('-sales3__sum')

其实,如果表格结构是下面这个情况,那就简单多了。

class S(models.Model):
    brand = models.CharField(max_length=4)
    sales = models.IntegerField(default=0)

解法:

S.objects.filter(city='上海').order_by('-sales').values()

找出所有上海地区的数据,找出销售排名前三的品牌这个功能用java来实现