我有这样的表:
user_id | points
--------+--------
1 10
1 500
2 2
2 6
3 5
3 50
现在我想计算有多少用户之间的SUM(点数),例如介于1和80之间,介于81和140之间,等等。我怎样才能得到它?在SQL中,它看起来只能通过嵌入式SQL查询来完成 - 内部用于使用HAVING子句和外部进行分组 - 用于计算结果集中的行。
答案 0 :(得分:0)
知道了。
#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()