CONSULTA SQL
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.
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.
Amigo segue abaixo
por periodo acrescente between
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
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
Olá Amigo.
Desculpe a informação errônea.
Utilizando count com distinct irá funcionar.
Desculpe a informação errônea.
Utilizando count com distinct irá funcionar.
SELECT count(distinct cod_produto) FROM pedidos_itens
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?
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;
select count(ven_estabelec) from ven_estab_conveni where campo_clliente = [ô] codcli [ô] group by ven_estabelec;
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.
Fiz então um teste direto no sql server com o código que segue:
Obtive valores diferentes dos obtidos no VB. Não sei o que pode estar acontecendo.
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.
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?
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?
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.
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.
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.
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