CONSULTA SQL

AQUILESBRUM 18/12/2010 11:56:39
#359843
Olá pessoal !
Tenho um banco com uma tabela vendas que registra além de outros dados o código do cliente. Preciso fazer uma consulta que me retorne quantos clientes compraram naquele dia ou período. Pensei em criar uma tabela com os codigos e contar por ela. Gostaria de saber se há uma maneira mais simples e facil de resolver este problema.
JESUEL.OLIVEIRA 18/12/2010 12:12:44
#359846
Amigo segue abaixo


 select count(ven_estabelec) from ven_estab_conveni group by ven_estabelec; 


por periodo acrescente between

 select count(ven_estabelec) from ven_estab_conveni where fec_dtpfech between 20100701 and 20100730  group by ven_estabelec 
AQUILESBRUM 18/12/2010 13:51:25
#359850
Citação:

select count(ven_estabelec) from ven_estab_conveni group by ven_estabelec;




Olá Jesuel ! Na verdade o que eu preciso é saber quantos clientes compraram no dia. Este select que você me passou conta todas as vendas. E se este cliente comprar várias vezes no mesmo dia? Eu tenho que que conta-lo uma só vez. E se eu quiser saber quantas vezes ele comprou? é ai que esta pegando.

Obrigado pela ajuda
JESUEL.OLIVEIRA 18/12/2010 21:51:40
#359863
Resposta escolhida
Olá Amigo.
Desculpe a informação errônea.

Utilizando count com distinct irá funcionar.

  SELECT count(distinct cod_produto) FROM pedidos_itens  
AQUILESBRUM 20/12/2010 13:37:49
#359995
Olá Josuel ! Funcionou beleza. Só uma última dúvida: Se eu quiser saber quantas vezes tal cliente comprou no dia ou em determinado período. Existe uma função SQL que me retorne isso?
JESUEL.OLIVEIRA 20/12/2010 21:59:55
#360034
Na mesma select eu não consegui, pois fica dúbio você quere dados distintos e depois quere vários, pode se possivel mas eu não consegui.

select count(ven_estabelec) from ven_estab_conveni where campo_clliente = [ô] codcli [ô] group by ven_estabelec;
AQUILESBRUM 03/01/2011 09:11:01
#360912
Pessoal ainda estou com problemas neste select. é o seguinte: O sistema em que estou buscando os dados para este select, tem um módulo de venda que funciona de 08:00hs da manhã até ás 23:00hs. Eu preciso fazer um select que além da data use como parametro o tempo. O código que segue esta funcionando mas...se eu fizer um select com a data ex: 01/11/2009 - hora inicial 08:00:00 e hora fianl 23:00 (que é o período todo de venda) obetenho um valor. Mas se eu fizer um select usando com a mesma data mas fracionando o tempo ex: 08:00:00hs ás 14:00:00hs e 14:00:00hs ás 23:00:00hs e somar os dois obtenho um total diferente do select anterior.


  SQL = [Ô]SELECT COUNT(DISTINCT Cota)as result FROM vendas[Ô] _
+ [Ô] WHERE[Ô] _
+ [Ô] DataVenda = [ô][Ô] & sData & [Ô] 00:00:00.000[Ô] & [Ô][ô][Ô] _
+ [Ô] AND [Ô] _
+ [Ô] HoraDaVenda [Ô] _
+ [Ô] BETWEEN [Ô] _
+ [Ô][Ô] & [Ô][ô][Ô] & [Ô]1899-12-30 [Ô] & dtHoraInicial & [Ô].000[Ô] & [Ô][ô][Ô] & [Ô][Ô] _
+ [Ô] AND [Ô] _
+ [Ô][Ô] & [Ô][ô][Ô] & [Ô]1899-12-30 [Ô] & dtHoraFinal & [Ô].000[Ô] & [Ô][ô][Ô] & [Ô][Ô] _


Fiz então um teste direto no sql server com o código que segue:

  SELECT COUNT(DISTINCT Cota) as Result FROM vendas
WHERE
DataVenda = [ô]2009-11-01 00:00:00.000[ô]
AND
HoraDaVenda
BETWEEN [ô]1899-12-30 08:00:00.000[ô] AND [ô]1899-12-30 23:00:00.000[ô]



Obtive valores diferentes dos obtidos no VB. Não sei o que pode estar acontecendo.
AQUILESBRUM 03/01/2011 09:37:41
#360915
Corrigindo: Havia falado que os resultados obtidos no VB e SQL Server estavam diferentes. Não estão. Fiz um teste para exemplificar para vocês o erro que estou encontrando.

VB e SQL Server 2005
Dia 01/11/2009
Hora Inicial: 08:00:00hs ás 23:00:00hs = 199

Hora Inicial: 08:00:00hs ás 14:00:00hs = 139
Hora Inicial: 14:00:00hs ás 23:00:00hs = 134
Total......................................................... 273


Quando peço periodos fracionados obtenho valores diferentes. Onde estou errando?
JESUEL.OLIVEIRA 05/01/2011 21:44:49
#361285
Amigo, no horário não pode ser 14:00:00 final e inicial.

inicial do segundo periodo precisar ser 14:00:01, se vc quiser e puder faça um backup e me encaminhe o SQL para eu importar e tentar te ajudar.
Poste a estrutura da tabela.
AQUILESBRUM 06/01/2011 13:29:28
#361368
Olá Jesuel !

Em relação ao período o valor 14:00:01 não faz muita diferença não. Já tinha feito este teste. O banco é muito grande para te mandar (cerca de 1.9Gb). Mas segue a estrutura da tabela.

Tópico encerrado , respostas não são mais permitidas