2012-07-01 51 views
1

我有一個表,其中包含userids和他們的分數。Django模型組超過2個元素

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循環來計數,但這不會有效。

感謝您的任何幫助。

回答

1

您要查找的SQL是這樣的:

SELECT rating, COUNT(rating) AS rc, COUNT(DISTINCT userid) FROM rating_tbl GROUP BY rating ORDER BY rc DESC; 

您沒有提供的模型,實際上這並不容易表示SQL在Django ORM,IMO。最簡單的方法是直接編寫它,參考the doc

+0

感謝您的SQL命令。 – wjheng

0

也許是這樣的:

MyTable.objects.annotate(Count('rating')).order_by('rating_count').annotate(Count('user_id')) 
1

您還沒有指示模型。