FWIW, on Postgres DBs, I've done the following:

qs = FooModel.objects.filter(date__gte=start_date,
date__lt=end_date).extra(select={'datetrunc': "date_trunc('month',
date)"}).values('datetrunc').annotate(total=Sum("value"))

date_trunc in postgres also accepts "day" and "week" truncations.

-- dz


2010/11/4 Rogério Carrasqueira <rogerio.carrasque...@gmail.com>

> Hello Folks!
>
> I've got the solution, putting here for future searchs:
>
> sales =
> Sale.objects.extra(select={'month':'month(date_created)','year':'year(date_created)'}).values('year','month').annotate(total_month=Sum('total_value'),
> average_month=Avg('total_value'))
>
> This query works only using MySQL, to use with PGSQL you need to know to
> work with EXTRACT clauses.
>
> Cheers
>
>
> Rogério Carrasqueira
>
> ---
> e-mail: rogerio.carrasque...@gmail.com
> skype: rgcarrasqueira
> MSN: rcarrasque...@hotmail.com
> ICQ: 50525616
> Tel.: (11) 7805-0074
>
>
>
> Em 4 de novembro de 2010 10:34, Rogério Carrasqueira <
> rogerio.carrasque...@gmail.com> escreveu:
>
> Hi Sebastien!
>>
>> Thanks for you reply. I'm a newbie on Django and I must confess
>> unfortunately I don't know everything yet ;-). So I saw that you made a
>> snippet regarding about the use of Django Cube. So, where do I put this
>> snippet: at my views.py? Or should I do another class at my models.py?
>>
>> Thanks so much!
>>
>> Regards,
>>
>> Rogério Carrasqueira
>>
>> ---
>> e-mail: rogerio.carrasque...@gmail.com
>> skype: rgcarrasqueira
>> MSN: rcarrasque...@hotmail.com
>>
>> ICQ: 50525616
>> Tel.: (11) 7805-0074
>>
>>
>>
>> 2010/10/29 sebastien piquemal <seb...@gmail.com>
>>
>> Hi !
>>>
>>> You could also give django-cube a try :
>>> http://code.google.com/p/django-cube/
>>> Unlike Mikhail's app, the aggregates are not efficient (because no
>>> optimization is made, I am working on this), but this is more than
>>> enough if you have a reasonable amount of data (less than millions of
>>> rows !!!).
>>> Use the following code, and you should have what you need :
>>>
>>>    from cube.models import Cube
>>>
>>>    class SalesCube(Cube):
>>>
>>>        month = Dimension('date_created__absmonth',
>>> queryset=Sale.objects.filter(date_created__range=(init_date,ends_date)))
>>>
>>>        @staticmethod
>>>        def aggregation(queryset):
>>>            return queryset.count()
>>>
>>> The advantage is that if you want to add more dimensions (type of sale/
>>> place/month, etc ...), you can do it very easily.
>>> Hope that helps, and don't hesitate to ask me if you can't have it
>>> working (documentation is not very good yet).
>>>
>>> On Oct 29, 12:54 am, Mikhail Korobov <kmik...@googlemail.com> wrote:
>>> > Hi Rogério,
>>> >
>>> > You can givehttp://bitbucket.org/kmike/django-qsstats-magic/srca
>>> > try.
>>> > It currently have efficient aggregate lookups (1 query for the whole
>>> > time series) only for mysql but it'll be great if someone contribute
>>> > efficient lookups for other databases :)
>>> >
>>> > On 28 окт, 19:31, Rogério Carrasqueira
>>> >
>>> > <rogerio.carrasque...@gmail.com> wrote:
>>> > > Hello!
>>> >
>>> > > I'm having an issue to make complex queries in django. My problem is,
>>> I have
>>> > > a model where I have the sales and I need to make a report showing
>>> the sales
>>> > > amount per month, by the way I made this query:
>>> >
>>> > > init_date = datetime.date(datetime.now()-timedelta(days=365))
>>> > > ends_date = datetime.date(datetime.now())
>>> > > sales =
>>> > >
>>> Sale.objects.filter(date_created__range=(init_date,ends_date)).values(date_
>>> created__month).aggregate(total_sales=Sum('total_value'))
>>> >
>>> > > At the first line I get the today's date past one year
>>> > > after this I got the today date
>>> >
>>> > > at sales I'm trying to between a range get the sales amount grouped
>>> by
>>> > > month, but unfortunatelly I was unhappy on this, because this error
>>> > > appeared:
>>> >
>>> > > global name 'date_created__month' is not defined
>>> >
>>> > > At date_created is the field where I store the information about when
>>> the
>>> > > sale was done., the __moth was a tentative to group by this by month.
>>> >
>>> > > So, my question: how to do that thing without using a raw sql query
>>> and not
>>> > > touching on database independence?
>>> >
>>> > > Thanks so much!
>>> >
>>> > > Rogério Carrasqueira
>>> >
>>> > > ---
>>> > > e-mail: rogerio.carrasque...@gmail.com
>>> > > skype: rgcarrasqueira
>>> > > MSN: rcarrasque...@hotmail.com
>>> > > ICQ: 50525616
>>> > > Tel.: (11) 7805-0074
>>> >
>>> >
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Django users" group.
>>> To post to this group, send email to django-us...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/django-users?hl=en.
>>>
>>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to