mysql - Django 选择范围内获得积分的用户计数

标签 mysql django django-aggregation

我有这样的 table :

user_id | points
--------+--------
1         10
1         500
2         2
2         6
3         5
3         50

现在我想计算有多少用户拥有 SUM(points),例如 1 到 80 之间、81 到 140 之间等。我怎样才能得到它?在 SQL 中,它看起来只能通过嵌入式 SQL 查询来完成 - 内部用于使用 HAVING 子句进行分组,外部 - 用于计算结果集中的行数。

最佳答案

明白了。

#Declaring grouped data ranges (`lte` is `<=`, `gte` is `>=`, no postfix is `=`)
points_grouping_data = {
    'A22': { 'cc__lte': 50 },
    'B22': { 'cc__gte': 51, 'cc__lte': 150 },
    'C22': { 'cc__gte': 151, 'cc__lte': 199 },
    'D22': { 'cc': 200 },
    'E22': { 'cc__gte': 201, 'cc__lte': 300 },
    'F22': { 'cc__gte': 300, 'cc__lte': 400 },
    'G22': { 'cc__gte': 400, 'cc__lte': 499 },
    'H22': { 'cc': 500 },
    'I22': { 'cc__gt': 500 },
}

for cell, params in points_grouping_data.items():
    value = PointsLog.objects.values('user').annotate(
        cc=Sum('points')
    ).filter(**params).count()

关于mysql - Django 选择范围内获得积分的用户计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737929/

相关文章:

Python MYSQL-connector 备份创建

mysql - navicat无法连接mysql

php - MySqli INSERT 不起作用,没有错误

python - 如果日志文件不可用,也不会失败

Django:获取两个相乘列的聚合值

django 使用基于查询的聚合值注释模型

python - Django对相关一对多对象的聚合查询

php - 下拉列表显示无值

python - 用于运行 Django 后端和 React 前端的 Makefile

python - 如何可靠地检查是否为对象定义了属性?