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

Resultado repetido

Não entendi porque o resultado da query

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

veio repetido para cada entrada. Alguém poderia explicar? As vezes o professor passa muito rápido pelas explicações sem dar detalhes..

3 respostas

Edit: Tive que rever pra me lembrar o problema. É como se o AVG estivesse se repetindo a cada movimentação agrupada, por isso ele retorna 2x 100 (no caso, o resultado da média com cada movimentação) e 2x 300, pelo mesmo motivo.

solução!

Esse comportamento se deve a um pequeno detalhe no exercício, explicado em https://cursos.alura.com.br/forum/topico-a-aula-contem-um-erro-38010.

Resumidamente, o atributo data é um TIMESTAMP (vide modelagem da classe), então cada registro vai estar agrupado somente consigo mesmo (precisão de milissegundos dificilmente irá conseguir agrupar mais de um registro por data). O uso do DISTINCT só evita a repetição de valores 100, 100, 300, 300 para 100, 300 (teste mostrando junto com os valores o atributo data).

Caso o atributo tivesse sido anotado indicando que seria gravado somente como DATE funcionaria da maneira imaginada.

Ah, ótima explicação! Valeu, Ítalo