django 分组查询之后统计占比
时间: 2023-04-05 22:04:11 浏览: 167
Django分组聚合查询实例分享
我可以回答这个问题。在 Django 中,可以使用 annotate() 和 values() 方法进行分组查询和统计占比。例如,假设我们有一个模型叫做 Book,其中有一个字段叫做 category,我们想要统计每个分类的书籍数量和占比,可以这样写:
```
from django.db.models import Count
books = Book.objects.values('category').annotate(count=Count('id'))
total_count = books.aggregate(total=Count('id'))['total']
for book in books:
category = book['category']
count = book['count']
percentage = count / total_count * 100
print(f'{category}: {count} ({percentage:.2f}%)')
```
这段代码会输出每个分类的书籍数量和占比,例如:
```
科幻: 10 (25.00%)
悬疑: 8 (20.00%)
言情: 12 (30.00%)
历史: 10 (25.00%)
```
希望这个回答能够帮到你!
阅读全文