python - Django 模型按 2 个以上元素分组

标签 python sql django

我有一个包含用户 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 循环进行计数,但这效率不高。

感谢您的帮助。

最佳答案

您正在寻找的sql如下:

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

你还没有提供模型,实际上在 Django ORM 中表示 SQL 并不容易,IMO。最简单的方法就是直接写,引用the doc .

关于python - Django 模型按 2 个以上元素分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279701/

相关文章:

Python:交叉索引numpy数组

python - Dreamhost 上的 Flask Passenger WSGI

php - 当表为空时 Yii 查询不返回 null

mysql - 显示分组依据的最大列 - 显示所有行

mysql - 替换函数出现 SQL 错误

python - webdriver 和 asyncio

python - Colab 中/root/.keras/datasets/在哪里

python - 带有附加参数的 Django redirect()

Django-Userena : Overriding profile editing form

python - Django 书第 6 章 : unable to import Book model