1

ユーザー 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 ループを使用してカウントすることはできますが、それは効率的ではありません。

助けてくれてありがとう。

4

2 に答える 2

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を表現するのは簡単ではありません。最も簡単な方法は、それを直接書くことです。ドキュメントを参照してください。

于 2012-07-01T08:23:23.313 に答える
0

多分このようなもの:

MyTable.objects.annotate(Count('rating')).order_by('rating_count').annotate(Count('user_id'))
于 2012-07-01T06:59:59.393 に答える