Gorm - Contagem de Registros (Group By)
11/12/2012 04:01
0
Pessoal,

Estou acrescentando o plugin Google Visualization em um dos meus testes e me deparei fazendo consulta SQL ou fazendo uma gambiarra para fazer a contagem dos registros.

Exemplo 1 - SQL

def tarefas() {
def query = "select c.categoria, count(r) from Categoria c group by c.categoria"
def result = Categoria.executeQuery(query)
[retorno:result]
}


Exemplo 2 - Criando um map e populando com uma varredura na lista

def tarefas() {

def referenica = Referencia.get(1)
def retorno =[:]
def categorias = Categoria.findAllByReferencia(referencia)
categorias.each {categoria ->
if(retorno[categoria.descricao]){
retorno[categoria.descricao]++
} else {
retorno[categoria.descricao] = 1
}


}

[dados:retorno]


Como vocês agem quando se deparam com uma situação semelhante?
O segundo eu acho que deve ser extremamente problemático quando tem um volume muito alto de informações.

Obrigado
Tags: gorm, sql, count, contagem registros, chart, pizza


1
Fala Rafael!

Brother tem que ser com o gorm? Com criteria vc resolveria esse problema com projections!

Abraço!


1
Oi Rafael,

das suas duas abordagens, a primeira é muito melhor. Este negócio de ficar contando registros vai detonar sua performance e consumo de memória.

Outra opção interessante é usando criterias.



0
Opa!

Não conhecia esse lance de "projections". Acho que era disso que eu estava atrás e não sabia.

E de quebra, além da contagem faz média, soma, tira max, min e outras cositas mas

http://grails.org/doc/2.0.0/ref/Domain%20Classes/createCriteria.html


def c = Account.createCriteria()
def branchCount = c.get {
projections {
countDistinct "branch"
}
}


Muito obrigado pelo ensinamento!!
11/12/2012 11:50



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto