2014-12-02 4 views
0

У меня есть таблицаSQL - Эквивалент Django Query

+----+------------+ 
| 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-10 и 2006-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

ответ

0

Вы можете использовать aggregation:

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