2014-12-02 71 views
0

我有一个表SQL - 等效的Django查询

+----+------------+ 
| id | day  | 
+----+------------+ 
| 1 | 2006-10-08 | 
| 2 | 2006-10-08 | 
| 3 | 2006-10-09 | 
| 4 | 2006-10-09 | 
| 5 | 2006-10-09 | 
| 5 | 2006-10-09 | 
| 6 | 2006-10-10 | 
| 7 | 2006-10-10 | 
| 8 | 2006-10-10 | 
| 9 | 2006-10-10 | 
+----+------------ 

我想组由频率,其计,例如

由于有出现两次日期2006-10-08,因此频率为2,并且只有一个日期出现两次,因此总日期为1

又如

2006-10-102006-10-09都出现4次,因此,频率4和总的日期与频率4是2

像下面

+----------+--------------------------------+ 
| Freuency | Total Dates with frequency N | 
+----------+--------------------------------+ 
| 1  | 0        | 
| 2  | 1        | 
| 3  | 0        | 
| 4  | 2        | 
| n  | f(n)       | 
+----------+--------------------------------+ 

我有一个SQL查询,一个经过深思熟虑后才写成的,我想知道的等效Django的查询会是什么

我期待输出?

select freq, count(*) 
from (select day, count(*) as freq 
     from test 
     group by day 
    ) d 
group by freq; 
+0

你能不能给我们你的Django模型? – wolendranh 2014-12-02 16:11:04

回答

0

您可以使用aggregation

from django.db.models import Count 
MyModel.objects.values('day').annotate(frequency=count('day')).order_by('frequency')