django - 合并来自两个带注释查询的结果
问题描述
我正在尝试查询 django 以获得以下结果:
subject_name、total_grades、passed_grades、passed_precentage
像
数学,20,15,75.0
查询是:
from django.db.models import Count
passed_bysubjects = grades.objects.filter(yeardata__year="2011-2012",grade__gte=5).values('code__name').annotate(Passed=Count('grade'))
total_bysubject = grades.objects.filter(yeardata__year="2011-2012").values('code__name').annotate(Total=Count('grade'))
我已经完成了我在下面发布的操作,但我想知道是否有更好的方法。
results = list(total_bysubject)
for a in passed_bysubjects:
for b in results:
if a['code__name'] == b['code__name']:
b['Passed'] = a['Passed']
b['Percentaje'] = (b['Passed'])*100/b['Total']
这可以通过使用 django 方法来实现吗?
谢谢
解决方案
感谢@schillingt,他向正确的方向发布了我的信息。
就我而言,解决方案是:
qset = grades.objects.filter(
yeardata__year="2011-2012"
).values('code__name').annotate(
Average=Avg('grade'),
Passed=Count('grade',filter=Q(grade__gte=5)),
Total=Count('grade'),
Percentaje=F('Passed')*100/F('Total')
)
我的数据是这样的:
学生、代号、年份、年级
(主题的代号)
我想得到关于每个主题的一些统计数据
推荐阅读
- c# - Collection DropdownList 在渲染视图时失去其价值 - Asp.net MVC
- oracle - SET_ROWID_THRESHOLD - ORA-29971
- flutter - Flutter Syncfusion 范围指针 SweepGradient 渐变颜色
- java - 在使用 this 作为形式参数的情况下,无法在实际参数中传递对象的引用变量
- python - 由于来自另一个 pandas 列的值,从作为 datetime 列的时间差(以分钟为单位)
- java - Spring Boot 测试:@Scheduled bean 在脏上下文后继续执行
- jestjs - 开玩笑错误:无法设置基本提供程序。使用 'ng test' 升级 Angular v13 后
- email - 关于 Haveibeenpwned 中的域搜索的问题
- devops - NewRelic helm chart 安装
- rest - 如何使用 REST 从 MLFlow 下载工件?