[SQL] Retornar quantidade de linhas em um Select com group by
boa tarde people td bom?
Como é possível, via SQL, saber o total de linhas retornadas por um select com group by?
por exemplo:
obrigado a todos!
Como é possível, via SQL, saber o total de linhas retornadas por um select com group by?
por exemplo:
select V.idcliente from vendas V where V.data >= '10/1/2017' and V.data <= '10/18/2017' and V.data_pagamento is null group by V.idcliente
obrigado a todos!
Gladstone Matos
Curtidas 0
Melhor post
Gladstone Matos
24/10/2017
bom dia people obrigado a todos! ;)
segue abaixo a resposta ;)
grande abraco
segue abaixo a resposta ;)
select count(*) from ( select V.idcliente from vendas V where V.data >= '10/1/2017' and V.data <= '10/18/2017' and V.data_pagamento is null group by V.idcliente having count(v.idcliente) > 1 )
grande abraco
GOSTEI 1
Mais Respostas
Adriana Carvalho
18/10/2017
Boa noite!
Vamos ver se entendi sua dúvida: vou pegar seu exemplo como base. Você está selecionando todos os IDs de clientes que compraram (tabela vendas) entre as datas de 01 de outubro de 2017 até 18 de outubro de 2017, agrupando por cliente, ou seja, cada ID aparece uma vez só.
Porém, um cliente pode ter comprado mais de uma vez, e em mais de uma data, e você quer saber quantas vezes ele comprou, isto é, quantas vezes apareceu na tabela.
Dessa forma, poderia usar um "COUNT" no select:
select V.idcliente, COUNT(V.IdCliente) as QTD
from vendas V
where V.data >= '10/1/2017'
and V.data <= '10/18/2017'
and V.data_pagamento is null
group by V.idcliente
O resultado seria esse:
idcliente QTD
---------- ------
12907 12
203 9
4080 1
E assim por diante!
Espero ter entendido corretamente e solucionado sua dúvida!
Vamos ver se entendi sua dúvida: vou pegar seu exemplo como base. Você está selecionando todos os IDs de clientes que compraram (tabela vendas) entre as datas de 01 de outubro de 2017 até 18 de outubro de 2017, agrupando por cliente, ou seja, cada ID aparece uma vez só.
Porém, um cliente pode ter comprado mais de uma vez, e em mais de uma data, e você quer saber quantas vezes ele comprou, isto é, quantas vezes apareceu na tabela.
Dessa forma, poderia usar um "COUNT" no select:
select V.idcliente, COUNT(V.IdCliente) as QTD
from vendas V
where V.data >= '10/1/2017'
and V.data <= '10/18/2017'
and V.data_pagamento is null
group by V.idcliente
O resultado seria esse:
idcliente QTD
---------- ------
12907 12
203 9
4080 1
E assim por diante!
Espero ter entendido corretamente e solucionado sua dúvida!
GOSTEI 0
Gladstone Matos
18/10/2017
ola Adriana bom dia!
Primeiramente SUPER obrigado pela ajuda!
Então, minha dúvida é 'quase' essa; Minha ideia seria retornar a quantidade total de clientes únicos; Por exemplo, digamos que a tabela tenha os dados abaixo:
idcliente data
---------- ------
12907 2/10/2017
203 5/10/2017
203 8/10/2017
9548 11/10/2017
A ideia seria retornar o resultado '3 clientes unicos compraram no periodo';
Voce tem uma ideia de como ficaria este SQL? ;)
abracos
Primeiramente SUPER obrigado pela ajuda!
Então, minha dúvida é 'quase' essa; Minha ideia seria retornar a quantidade total de clientes únicos; Por exemplo, digamos que a tabela tenha os dados abaixo:
idcliente data
---------- ------
12907 2/10/2017
203 5/10/2017
203 8/10/2017
9548 11/10/2017
A ideia seria retornar o resultado '3 clientes unicos compraram no periodo';
Voce tem uma ideia de como ficaria este SQL? ;)
abracos
GOSTEI 0
Huidemar Costa
18/10/2017
Considerando a ideia do Adrifcarvalho, tente assim(colocando um "distinct" no "count" ):
select V.idcliente, COUNT(distinct V.IdCliente) as QTD from vendas V where V.data >= ''''10/1/2017'''' and V.data <= ''''10/18/2017'''' and V.data_pagamento is null group by V.idcliente
GOSTEI 0
Gladstone Matos
18/10/2017
olá Huidemar bom dia! WOW super obrigado pelo apoio!
Infelizmente não funcionou.... Por causa do 'group by', o COUNT veio quebrado 'por linha', dessa forma:
idcliente QTD
---------- ------
12907 1
203 2
9548 1
Meu objetivo seria retornar a quantidade total de linhas - nesse caso - 3 registros ;)
q achas?
abraços
Infelizmente não funcionou.... Por causa do 'group by', o COUNT veio quebrado 'por linha', dessa forma:
idcliente QTD
---------- ------
12907 1
203 2
9548 1
Meu objetivo seria retornar a quantidade total de linhas - nesse caso - 3 registros ;)
q achas?
abraços
GOSTEI 0
Luiz Santos
18/10/2017
Gladstone.
Se você só quer saber a quantidade total de clientes únicos, faz assim
Sem o GROUP BY
Se você só quer saber a quantidade total de clientes únicos, faz assim
SELECT COUNT(DISTINCT V.IdCliente) from vendas V where V.data >= ''''10/1/2017'''' and V.data <= ''''10/18/2017'''' and V.data_pagamento is null
Sem o GROUP BY
GOSTEI 0
Gladstone Matos
18/10/2017
bom dia Luiz!
Super obrigado pelo apoio! Na verdade, não consigo usar o DISTINCT 'direto' por causa de uma expressao 'Having' (que eu acabei esquecendo de publicar no post....); Veja abaixo:
O que voce acha?
Super obrigado pelo apoio! Na verdade, não consigo usar o DISTINCT 'direto' por causa de uma expressao 'Having' (que eu acabei esquecendo de publicar no post....); Veja abaixo:
select V.idcliente from vendas V where V.data >= '10/1/2017' and V.data <= '10/18/2017' and V.data_pagamento is null group by V.idcliente having count(v.idcliente) > 1
O que voce acha?
GOSTEI 0