Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Agrupar pela data - TypedQuery(Aula 8)

No exemplo do group by, foi necessário dar um distinct para nao repetir os resultados.

String jpql = "select avg(m.valor) from Movimentacao m where m.conta = :pConta" + " and m.tipo = :pTipo" + " group by m.data";

Porém, se estava agrupando pela data, o normal já não seria só aparecer dois resultados, já que temos duas datas apenas? Ou na hora de comparar para agrupar, o JPA verifica também os horários das datas, e por isso continuou com 4 resultados?

2 respostas

Opa Gustavo, vai depender de como está sua data está mapeada... se estiver pegando toda informação, o horário vai contar também.

solução!

Opa, Gustavo! Acrescentando a resposta do Alberto Souza, no curso, a data é mapeada como TIMESTAMP, ou seja, considera data e hora.

public class Movimentacao {
...
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar data;
...
}

Portanto, não há necessidade de usar o DISTINCT na query. Basta fazer a query utilizando as funções de data da JPQL. Ficaria assim:

"select avg(m.valor) from Movimentacao m where m.conta = :pConta "
                + " group by year(m.data), month(m.data), day(m.data)"

Abraço!