有一个表 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来实现