Contar Valores Distintos SQL PHP (Para ninjas e faixas preta em SQL)

9 respostas Resolvido
phpsql
A

Pessoal,
Preciso de uma força, quebrando a cabeça aqui.

Como faria um query pra contar os valores abaixo.
Preciso que a query retorne o total de dentro quando o nome for igual;
Exemplo: ALEX e PATY TEM 4 REGISTRO NO BD, cada, sendo que no campo valida 3 estão com o valor = dentro . Fazendo manual o valor seria igual 2.

NOME | MES | VALIDA
ALEX  | JAN  | DENTRO
ALEX  | FEV  | DENTRO
ALEX  | MAR | DENTRO
ALEX  | ABR  | FORA
PATY  | JAN  | DENTRO
PATY  | FEV  | DENTRO
PATY  | MAR | DENTRO
PATY  | ABR  | FORA

9 Respostas

S

Não deu para entender.
Fazendo manual o valor seria igual a 2? Não seria 3?
É isso?

A

Nao porque a contagem teria que agrupar o nome.

S

Ainda não deu para entender.
Levando em consideração os registros

NOME | MES | VALIDA
ALEX | JAN | DENTRO
ALEX | FEV | DENTRO
ALEX | MAR | DENTRO
ALEX | ABR | FORA
PATY | JAN | DENTRO
PATY | FEV | DENTRO
PATY | MAR | DENTRO
PATY | ABR | FORA

Quais seria o resultado esperado?

A

O esperado seria 2.
Porque existe dois nomes que possui no campo VALIDA o valor “DENTRO”;

Eu preciso que a query retorne o total de nomes que possui 3 “DENTRO” no campo valida.

NOME | MES | VALIDA
ALEX | JAN | DENTRO
PATY| JAN | DENTRO

S
Solucao aceita

Ai sua consulta, faz um teste ai.

SELECT nome,mes,valida FROM tab
WHERE valida = 'DENTRO’
GROUP BY nome
HAVING COUNT(valida) = 3

P

Exatamente 3? Ou 3 ou mais?

SELECT nome, valida 
   FROM tabela
  WHERE valida = 'DENTRO'
  GROUP BY nome,  valida
 HAVING COUNT(*) >= 3
A

Funcionou!!! Perfeito. Obrigado! Valeu msm

A

Funcionou!!! Perfeito. Obrigado! Valeu msm!

A

Só mais uma duvida.
E como ficaria a query para trazer todos os registros sem agrupar por nome?
Tentei dessa forma e nao funcionou:
SELECT nome,mes,valida FROM tab
WHERE valida = 'DENTRO’
and nome
HAVING COUNT(valida) = 3

Criado 21 de novembro de 2016
Ultima resposta 22 de nov. de 2016
Respostas 9
Participantes 3