Busca com somatório por data
24/06/2016 00:28
1
Ola!
Preciso realizar uma busca em minha tabela de acessos ao app, porém é necessário apresentar somente o numero de acessos por:

Dia, Mês e Ano

Qual seria o melhor critério para realizar a busca:

Abaixo segue meu controller e informações referente ao formato persistido na tabela

        //Acessos no dia     Acessos no mês Acessos no ano           -> contadores
       
//?insert tabela acesso
        // dataacesso                       ip
        //2016-05-03 22:33:53    127.0.0.1

?package tfds
class ConsultaController {
    def index() {
        def lista = []
        
        lista = Acesso.list()
        render(view: "index", model:[lista: lista])
    }
}
 
Tags: Grails, busca


0
Oi Anderson,

há algo similar na implementação do /dev/All - http://www.devall.com.br
Vou lhe dizer como fizemos no banco de dados, talvez isto te ajude.

Nós possuímos uma tabela na qual armazenamos a hora em que alguém clicou sobre um link: estas informações são usadas na exposição do ranking semanal e mensal, que pode ser visto neste link: http://devall.com.br/rank/index

Esta entidade que usamos para registrar o clique (e que bate com a sua necessidade do acesso), é similar à exposta abaixo:

class Clique {
    Date data
    Post post
}


Observe que como consequencia, estamos usando um campo do tipo timestamp no banco de dados para armazenar a data do clique. Então, como separar dia, mês e ano?
A solução que encontramos foi a criação de uma view no próprio banco de dados, cuja implementação é similar à exposta abaixo:


create view acessos_decompostos as
select id, day(data) as dia, month(data) as mes, year(data) as ano from clique


Logo na sequência, caso desejemos agrupar estes dados, há dois caminhos: ou criamos uma view para a agrupação pelo dia, mês e ano ou não. 

Vamos para o primeiro caso: se criamos uma view que já agrupa por mês e ano, tudo o que fazemos na sequência é mapear uma classe de domínio para esta nova view: seu problema está resolvido.

Se não for para criar uma nova view, mas sim apenas a original, basta que você siga dois passos:
1) Crie uma classe de domínio que seja mapeada contra a view original
2) Use criterias com as instruções groupProperty ou HQL usando as funções de group by para obter o resultado que você deseja.



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