Pessoal, como posso fazer 2 COUNT no SQL separando o resultado em duas colunas?

03/05/2018

0

Na minha tabela "tb_nova_production" que armazena os dados tem 2 colunas (Nome, Segmento), porém não sei como vou fazer para separar a quantidade de segmento por coluna.


Tabela que contém no banco de dados (Access 2002-2003):

Nome | Segmento |
------------------
Pedro | Privado |
Maria | Privado |
João | Outros |
Maria | Outros |
João | Outros |
João | Outros |
Maria | Privado |
Pedro | Outros |
Pedro | Outros |

Com esse SQL consegui exibir a quantidade de segmento "Outros" da tabela na página html porém desejo mais uma coluna com a quantidade de Segmento "Privado":

$sql = "SELECT Nome, COUNT(Segmento) AS qtd FROM tb_nova_production WHERE [Segmento] = ''Outros'' GROUP BY Nome";

$result = $conexao->query($sql);
while ($row = $result->fetch()){
  echo "<tr><td>" . $row[''Nome''] . "</td>
        <td>" . $row[''qtd'']  . "</td></tr></span>";
}


Tabela que consigo exibir com SQL acima na página html:

Nome | Outros |
----------------
João | 3 |
Maria | 1 |
Pedro | 2 |


Tabela que desejo exibir:

Nome | Outros | Privado |
--------------------------
João | 3 | 0 |
Maria | 1 | 2 |
Pedro | 2 | 1 |


Como faço essa consulta?
Novato

Novato

Responder

Post mais votado

03/05/2018

Novato, boa noite. Dias atrás você abriu este mesmo tópico, houveram algumas interações, inclusive minhas, embora não tenha chegado ainda a uma definição, é interessante que você mantenha a dúvida no mesmo tópico assim os demais colegas podem acompanhar e avaliar o que já foi postado antes de lhe darem sugestões de solução, pois o exemplo enviado mesmo que não sirva a você, podem servir a outros.. Quando necessitar que o tópico volte a ser um dos primeiros da lista, coloque algum comentário seu, melhor do que traze-lo como uma nova dúvida.

Abração e sucesso...

Jerson Boer

Jerson Boer
Responder

Mais Posts

04/05/2018

Emerson Nascimento

SELECT
  Nome,
  SUM(CASE WHEN coalesce(Segmento,'''')=''Outros'' THEN 1 ELSE 0 END) OUTROS, 
  SUM(CASE WHEN coalesce(Segmento,'''')=''Privado'' THEN 1 ELSE 0 END) PRIVADO
FROM tb_nova_production
GROUP BY Nome
Responder

07/05/2018

Novato

Obrigado Jerson Boer pela dica.

Obrigado Emerson pela resposta, porém não teve resultados.
Responder

07/05/2018

Novato

Pessoal, com ajuda de vocês consegui da seguinte forma:

$sql = "SELECT Nome, SUM([Segmento] = 'Privado') AS qtd, SUM([Segmento] = 'Outros') AS qtd2 FROM tb_nova_production GROUP BY Nome";
 
$result = $conexao->query($sql);
while ($row = $result->fetch()){
  echo "<tr><td>" . $row[''Nome''] . "</td>
        <td>" . $row[''qtd'']  . "</td>
        <td>" . $row[''qtd2'']  . "</td></tr></span>";
}

Os resultados estão exibindo corretamente, porém com sinal de menos ao lado (-) e acrescentando ".0" em todos os resultados. Como faço para corrigir?

Nome | Outros | Privado |
--------------------------
João | -3.0 | -0.0 |
Maria | -1.0 | -2.0 |
Pedro | -2.0 | -1.0 |
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar