Fórum Não selecionar registro duplicados - Como fazer?!?! #388958
20/10/2010
0
Eu preciso gerar uma consulta mensal de freqüência de pessoas, por exemplo:
Mês 10, dia 4 Segunda-Feira entrou 300 associados.Mês 10, dia 5 Terça-Feira entrou 560 associados.
O problema é que um associado pode ter entrado mais de uma vez no mesmo dia, e nesse caso eu preciso contar apenas uma vez.
Eu comecei a escrever o instrução, mas não consigo informar que se existir mais de uma entrada do mesmo associado no mesmo dia ele deve contar como 1 entrada somente.
Instrução SQL - Banco de Dados Firebird 2.0
select extract(day from ac001.dtentrada) as dia, extract(month from ac001.dtentrada) as mes, count(*) from ac001 where extract(year from ac001.dtentrada) = 2010 group by extract(month from ac001.dtentrada), extract(day from ac001.dtentrada) order by 2, 1
Obrigado.
Silvio Morelo
Curtir tópico
+ 0Posts
20/10/2010
Leonardo Xavier
SELECT DISTINCT (campos sua tabela separados por vírgula) FROM sua tabela //sem o ()
Gostei + 0
20/10/2010
Emerson Nascimento
extract(day from dtentrada) as dia,
extract(month from dtentrada) as mes,
count(DISTINCT idusuario)from
ac001where
extract(year from dtentrada) = 2010group by
extract(month from dtentrada), extract(day from dtentrada)order by
2, 1
Gostei + 0
20/10/2010
Wilson Junior
where extract(year from dtentrada) = 2010
e sim
where dtentrada BETWEEN '01/01/2010' AND '12/31/2010'
Pois ficará mais rápido, já que o mesmo não precisa efetuar uma operação (EXTRACT) para cada registro.
Espero ter colaborado.
Gostei + 0
21/10/2010
Bruno Batista
sugiro primeiro fazer um agrupamento dos usuários, posteriormente agrupar por dia, fazendo sub-consulta.
[code]
Select dia,
mes,
count(1) as quantidade
From (select extract(day from ac001.dtentrada) as dia,
extract(month from ac001.dtentrada) as mes,
usuario
from ac001
where extract(year from ac001.dtentrada) = 2010
group by extract(month from ac001.dtentrada),
extract(day from ac001.dtentrada),
usuario)
group by dia,
mes
order by 2, 1
Eu preciso gerar uma consulta mensal de freqüência de pessoas, por exemplo:
Mês 10, dia 4 Segunda-Feira entrou 300 associados.Mês 10, dia 5 Terça-Feira entrou 560 associados.
O problema é que um associado pode ter entrado mais de uma vez no mesmo dia, e nesse caso eu preciso contar apenas uma vez.
Eu comecei a escrever o instrução, mas não consigo informar que se existir mais de uma entrada do mesmo associado no mesmo dia ele deve contar como 1 entrada somente.
Instrução SQL - Banco de Dados Firebird 2.0
select extract(day from ac001.dtentrada) as dia, extract(month from ac001.dtentrada) as mes, count(*) from ac001 where extract(year from ac001.dtentrada) = 2010 group by extract(month from ac001.dtentrada), extract(day from ac001.dtentrada) order by 2, 1
Obrigado.
Gostei + 0
21/10/2010
Silvio Morelo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)