我正在嘗試從我的 django 模型表中提取一些分析。到目前為止,我可以計算字段的總值和字段的不同值。我還知道如何創建顯示不同字段內字段總值的列表?,F在我想計算一個字段出現在不同字段的已經不同值的列表中的不同實例。這是我正在使用的表:| uid | cid ||-------|--------|| a | apple || a | apple || a | grape || b | apple || b | grape || c | apple || c | pear || c | pear || c | pear |所以我試圖提供的結果是:cid: apple (distinct uid count: 3),cid: grape (distinct uid count: 2),cid: pear (distinct uid count: 1)并且:cid apple's distinct uid's: a, b, ccid grape's distinct uid's: a, bcid pear's distinct uid's: c到目前為止,我已經能夠獲得不同的計數和列表,如下所示:dist_uid_list = Fruit.objects.filter(client=user).values('uid').distinct()output >>> {'uid': 'a', 'uid': 'b', 'uid': 'c'}和這個:dist_uid_count = Fruit.objects.filter(client=user).values('uid').distinct().count()output >>> {3}以及更復雜的:total_actions_per_cid = Fruit.objects\ .filter(client=user)\ .values('cid').distinct()\ .annotate(num_actions=Count('action_name'))\ .order_by('cid')output >>> {'cid': 'apple', 'num_actions': '4'}{'cid': 'grape', 'num_actions': '2'}{'cid': 'pear', 'num_actions': '3'}所以問題是:我怎樣才能進入并獲取每個不同的“cid”并找到每個不同的“uid”中存在多少個不同的“uid”?
1 回答

翻閱古今
TA貢獻1780條經驗 獲得超5個贊
計數聚合有一個不同的參數,可能會有所幫助:
>>> q = Book.objects.annotate(Count('authors', distinct=True), Count('store', distinct=True))
https://docs.djangoproject.com/en/3.1/topics/db/aggregation/#combining-multiple-aggregations
因此您的查詢將如下所示:
# I removed the distinct after .values, as the values works
# like a GROUP BY, thus you will get already unique 'cid's
total_actions_per_cid = Fruit.objects\
.filter(client=user)\
.values('cid') \
.annotate(num_uids=Count('uid', distinct=True))
添加回答
舉報
0/150
提交
取消