[SQL] Retornar quantidade de linhas em um Select com group by
18/10/2017
0
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
Post mais votado
24/10/2017
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
Gladstone Matos
Mais Posts
18/10/2017
Adriana Carvalho
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!
19/10/2017
Gladstone Matos
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
19/10/2017
Huidemar Costa
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
19/10/2017
Gladstone Matos
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
19/10/2017
Luiz Santos
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
19/10/2017
Gladstone Matos
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?
Clique aqui para fazer login e interagir na Comunidade :)