SQL в Django ORM для группировки по отличительным признакам
Каким будет перевод приведенного ниже запроса на django orm?
select date(start_date) as start, count(*) as tournament_count, count(distinct(user_id)) from tournament group by start
Я не уверен, как сделать часть count(distinct(user_id)
. Я думаю, что это должно выглядеть примерно так
Tournament.objects.annotate(date=TruncDate('start_date')).values('date').annotate(tournaments=Count('id')).order_by()
Но это не дает мне distinct
части первоначального запроса
Вы можете использовать distinct=True
в вашей Count
функции, как эта.
# your query
tournaments=Count('id', distinct=True)
Это SQL эквивалент COUNT(DISTINCT your_field ).
Для более подробной информации посмотрите django docs