Agrupar dados de um List

5 respostas
L

$F{area}+""+"("+" “+new BigDecimal(($P{perc}.doubleValue()) /($F{total}.doubleValue())*100 ).setScale(2,RoundingMode.HALF_UP)+” “+”%"+")"

preciso agrupar uma lista que contem ± isso:

area qtdeX qtdeY qtdeZ
xxxx 10 21 21
xxxx 13 15 21
xxxx 12 11 21
yyyy 10 11 21
yyyy 17 12 21
yyyy 19 16 21

onde qtdeX e qtdeY e um campo que vem calculado no bd,
portanto preciso que ao agrupar seja inserido o maior valor de qtdeX e qtdeY

teria que ficar com uma lista assim:

area qtdeX qtdeY qtdeZ
xxxx 13 21 21
yyyy 19 16 21

alguem pode ajudar,nem que for conceitualmente.
obrigado

5 Respostas

Requena

na query que vc esta fazendo
coloca no final

“order by qtdeX, qtdeY”

pronto… ja vem ordenado

L

minha query:

String hql = "select area.nome ,atendimento.dataEnvioArea ,"
				+ " registro.dataCriacao  , count(atendimento.id) , atendimento.situacaoAtendimento "
				+ " from Atendimento atendimento,AreaGestora area ,RegistroCriacao registro"
				+ " where atendimento.areaGestora.id in(:areas) "
				// + " ( atendimento.dataEnvioArea is not null "
				// + " and registro.dataCriacao is not null"
				+ " and atendimento.dataEnvioArea  between  :dataInicial and :dataFinal"
				+ " and area.id = atendimento.areaGestora.id "
				+ " and atendimento.registroCriacao.id = registro.id "
				+ " group by area.nome,atendimento.dataEnvioArea,"
				+ "	registro.dataCriacao,atendimento.situacaoAtendimento"
				+ " order by area.nome ";

com os resultados desta query tenho que aplicar alguns filtros ainda para depois agrupar como mostrei acima
obrigado por responder.

Requena

cara… nao to sacando a sua estrutura…
esses dados estao em algum objeto? lista? map? mais de 1 objeto???
separados… juntos… donde vem esse qtdeX e qtdeY?
tem trocentas formas de ordenação… preciso de mais informações para escolher uma q se adapte a sua estura de objetos…
saca???
axei q tava tudo numa query soh… passa ai mais informação…

tipo…
quer uma lista q tenha o objeto abaixo…

class objeto { String area; Double qtdeX, qtdeY, qtdeZ ; }

com indice ordenado por X+Y?
isso?

abrass…

L

Os dados estao em varias tabelas,to tentando montando um VO dos caras, o problema e que preciso agrupar este resultado,tipo
ele me retorna varias registros de uma mesma area ai preciso percorrer esta lista e agrupar por area colocando em qtdX e qtdY os maires valores para este tipo de area;
tipos isso:

area qtdeX qtdeY qtdeZ
xxxx 13 21 21
yyyy 19 16 21

onde na minha lista tenho varias areas do tipo x com valores diferentes de qtdeX e qtdeY.

L

Tipo nesta list se eu conseguisse pegar o indice que tivesse o maior elemento de uma determinada area ja ajudaria.

Criado 24 de março de 2010
Ultima resposta 24 de mar. de 2010
Respostas 5
Participantes 2