On Tue, Jul 11, 2017 at 10:22 AM, kanhaiya yadav
<kanhaiya.yada...@gmail.com> wrote:
> Hi,
>
> I have a model
> class XyzModel (models.Model):
>    name = models.CharField(max_length=NAME_LENGTH)
>    unique_id = models.CharField(max_length=NAME_LENGTH)
>    info = models.CharField(max_length=NAME_LENGTH, blank=True)
>    violation_time = models.DateTimeField()
>
>
>
>
> I have many rows in the database. So I want to group by the results for
> every two hours or for every four hours.
> I want the result something like
>
> name                       violation_date
> interval                                 counts
> abc                           2017-07-01
> 06:00 - 08:00                           20
> xyz                           2017-07-01
> 08:00 - 10:00                           30
>
> My query is
> XyzModel.objects
>             .extra({"day": "date_trunc('hour',violation_time)"}
>             .values("day")
>             .order_by("day")
>             .annotate(count=Count("id"))
> But using this query I can only group the result by one hour interval. I
> want to group by more than one hour interval.

You realise your "day" parameter is actually hours, right?

.extra({'day', 'TRUNC(EXTRACT(hour FROM violation_time) / 2)'})

'day' will then be the 0-based index of the 2 hour periods, starting
from midnight, so a value of 5 would mean 10 AM - 12 AM.

Cheers

Tom

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAFHbX1KQBaTFkwV6Ar%3DfK9RM-vU-8GB_C6MsaPrLwQSko6Yv3Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to