【发布时间】:2012-04-01 19:46:28
【问题描述】:
想象一个数字猜谜游戏,一个人想到一个数字,另一个人必须猜它。如果猜对了,游戏就结束了。
模型可能看起来像这样
class SecretNumber(models.Model):
number = models.IntegerField()
class Guess(models.Model)
secretnumber = models.Foreignkey(SecretNumber)
guess = models.IntegerField()
玩了四次后,数据库可能是这样的:
id number
==========
1 10
2 54
3 68
4 25
id secretnumber_id guess
=============================
1 1 50
2 1 30
3 1 10
4 2 99
5 2 60
6 2 54
7 3 1
8 3 68
9 4 73
10 4 34
11 4 86
12 4 51
13 4 25
如您所见,猜者非常幸运:他猜了 3、3、2 和 4 次。但这只是为了让这个例子简短。 现在我需要提出一个允许显示以下数据的查询:
Nb. guesses Count
=====================
2 1
3 2
4 1
手动 SQL 语句如下所示:
SELECT inner_count AS 'Nb. guesses', count(inner_count) AS 'Count' FROM (
SELECT secretnumber_id, count(id) AS inner_count FROM guess GROUP BY secretnumber_id
) GROUP BY inner_count
我考虑过注释注释,但这似乎是不可能的。 有什么想法吗?
【问题讨论】:
标签: django aggregation