Group by com datetime

23 views
Skip to first unread message

Rodrigo attique santana

unread,
Feb 9, 2017, 8:21:10 AM2/9/17
to web2py-users-brazil
Bom dia meus amigos, estou postando esta dúvida pois não consegui encontrar a solução para um problema.

Veja, tenho a seguinte estrutura:

db.define_table(
'medicoes'
,Field('data_medicao','datetime',notnull=True)
,Field('valor_medicao','integer',notnull=True)
,Field('observacoes','text')
)

Eu preciso fazer uma consulta que exiba as medições diárias e preciso agrupar por data, porém são feitas 4 medições ao dia, logo é preciso somar e agrupar por data.

Em SQL (postgre) consigo fazer algo assim:

select m.*, sum(valor_medicao) from medicoes groupby cast('date',data_medicao);

E ele me exibe a lista da medição fazendo um cast na data, logo os datetimes são convertidos para um date e vai de boa.
No web2py não encontrei nada a respeito e nada do que tentei funcionou, como groupby=data_medicao.date() ou datetime.date(data_medicao).

Alguém já precisou fazer isto?

Carlos Costa

unread,
Feb 9, 2017, 9:06:48 AM2/9/17
to web2py-us...@googlegroups.com
Dá uma olhada aqui: http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#year--month--day--hour--minutes--seconds

Tente fazer groupby=db.medicoes.data_medicao.year()db.medicoes.data_medicao.month()|db.medicoes.data_medicao.day()



--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--


Carlos J. Costa
Cientista da Computação  | BS Computer Science
Esp. Gestão em Telecom   |
PgC Telecom Mangement
<º))><

Rodrigo attique santana

unread,
Feb 10, 2017, 9:59:14 AM2/10/17
to web2py-us...@googlegroups.com
Olá Carlos.

Deu certo da seguinte forma.

med = db.medicoes.data_medicao
groupby=(med.year(),med.month(),med.day())

Valeu.

Em 9 de fevereiro de 2017 12:06, Carlos Costa <yamand...@gmail.com> escreveu:
Dá uma olhada aqui: http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#year--month--day--hour--minutes--seconds

Tente fazer groupby=db.medicoes.data_medicao.year()db.medicoes.data_medicao.month()|db.medicoes.data_medicao.day()


Em 9 de fevereiro de 2017 11:21, Rodrigo attique santana <rodrig...@gmail.com> escreveu:
Bom dia meus amigos, estou postando esta dúvida pois não consegui encontrar a solução para um problema.

Veja, tenho a seguinte estrutura:

db.define_table(
'medicoes'
,Field('data_medicao','datetime',notnull=True)
,Field('valor_medicao','integer',notnull=True)
,Field('observacoes','text')
)

Eu preciso fazer uma consulta que exiba as medições diárias e preciso agrupar por data, porém são feitas 4 medições ao dia, logo é preciso somar e agrupar por data.

Em SQL (postgre) consigo fazer algo assim:

select m.*, sum(valor_medicao) from medicoes groupby cast('date',data_medicao);

E ele me exibe a lista da medição fazendo um cast na data, logo os datetimes são convertidos para um date e vai de boa.
No web2py não encontrei nada a respeito e nada do que tentei funcionou, como groupby=data_medicao.date() ou datetime.date(data_medicao).

Alguém já precisou fazer isto?

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--


Carlos J. Costa
Cientista da Computação  | BS Computer Science
Esp. Gestão em Telecom   |
PgC Telecom Mangement
<º))><

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/web2py-users-brazil/jwaEc1AWlzs/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--
ATT
Rodrigo Attique - Programador Desenvolvedor
9 8203.4651 / 9 9151.8339 (whatsapp)

Carlos Costa

unread,
Feb 10, 2017, 3:23:20 PM2/10/17
to web2py-us...@googlegroups.com
Ótimo!
flw

Você recebeu essa mensagem porque está inscrito em um tópico no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/web2py-users-brazil/jwaEc1AWlzs/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--
ATT
Rodrigo Attique - Programador Desenvolvedor
9 8203.4651 / 9 9151.8339 (whatsapp)

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--

Reply all
Reply to author
Forward
0 new messages