Django Queryset 基于唯一值注释
Django Queryset annotate based on unique value
我正在尝试编写一个查询集操作,尽可能高效地将第一个 table 转换为第二个 table
这是标准:
对于每个名称,有多少所独特的学校附属于它?此外,事先不知道确切的名称和学校。
Name
School
John
USC
John
USC
John
UCLA
Adam
UCSD
Adam
USC
Name
num_unique_schools
John
2
Adam
2
1- 使用 Values 方法:
学生将按姓名分组,因此您只会获得每个唯一学生姓名的注释结果。
2- 使用带有 distinct 参数的 Count 方法:
这是根据分组的学生姓名计算“学校”,同时删除重复的学校。
代码:
from django.db import models
results = StudentSchool.objects.values('name').annotate(
num_unique_schools = models.Count('school', distinct=True)
).order_by("name")
测试用例
我正在尝试编写一个查询集操作,尽可能高效地将第一个 table 转换为第二个 table 这是标准: 对于每个名称,有多少所独特的学校附属于它?此外,事先不知道确切的名称和学校。
Name | School |
---|---|
John | USC |
John | USC |
John | UCLA |
Adam | UCSD |
Adam | USC |
Name | num_unique_schools |
---|---|
John | 2 |
Adam | 2 |
1- 使用 Values 方法:
学生将按姓名分组,因此您只会获得每个唯一学生姓名的注释结果。
2- 使用带有 distinct 参数的 Count 方法:
这是根据分组的学生姓名计算“学校”,同时删除重复的学校。
代码:
from django.db import models
results = StudentSchool.objects.values('name').annotate(
num_unique_schools = models.Count('school', distinct=True)
).order_by("name")
测试用例