我有一个包含用户ID及其分数的表格。
eg. userid rating
123 1
123 2
456 1
789 5
123 1
我想要实现的是这样的汇总表:
rating 1 : 32 ratings by 20 ppl
2 : 37 ratings by 15 ppl
etc..
ppl的数量应该是给予该评级的不同用户。
我已经完成了Django模型聚合方法,并知道如何使用计数等。 但是我无法想出能够实现这一目标的东西。
当然我可以检索整个集合并在python中使用for循环来计算,但这不会有效。
感谢您的帮助。
答案 0 :(得分:1)
您正在寻找的SQL就像:
SELECT rating, COUNT(rating) AS rc, COUNT(DISTINCT userid) FROM rating_tbl GROUP BY rating ORDER BY rc DESC;
您还没有提供该模型,实际上在Django ORM,IMO中表示SQL并不容易。最简单的方法是直接编写,参考the doc。
答案 1 :(得分:0)
也许是这样的:
MyTable.objects.annotate(Count('rating')).order_by('rating_count').annotate(Count('user_id'))