Tenho uma tabela que gravo o idioma e a fluência do candidato. Por ex:
Candidato Idioma Fluência
1 Inglês 1
2 Espanhol 3
3 Francês 2
Quero saber quantos candidatos tem inglês, espanhol e francês básico, avançado e intermediário.
Para isso, eu faço o seguinte:
select Idioma,
COUNT(distinct(Candidato)) as Total,
count(CASE WHEN Fluência = 1 THEN 'Básico' ELSE NULL END) as Básico,
count(CASE WHEN Fluência = 2 THEN 'Intermediário' ELSE NULL END) as Intermediário,
count(CASE WHEN Fluência = 3 THEN 'Avançado' ELSE NULL END) as Avançado
from tabela
group by Idioma
O resultado é:
Idioma Total Básico Intermediário Avançado
Inglês 2 2 0 0
Espanhol 3 1 1 1
Francês 1 0 1 0
Porém, se tiver um registro duplicado, ou seja, de dois candidatos, se um aparecer 3 vezes e outro 2 vezes na tabela com o Inglês básico, o resultado vai ser assim:
Idioma Total Básico Intermediário Avançado
Inglês 2 5 0 0
Espanhol 3 1 1 1
Francês 1 0 1 0
Como eu faço nesse caso para contar somente os registros únicos?
Pergunta
ndias
Tenho uma tabela que gravo o idioma e a fluência do candidato. Por ex:
Candidato Idioma Fluência
1 Inglês 1
2 Espanhol 3
3 Francês 2
Quero saber quantos candidatos tem inglês, espanhol e francês básico, avançado e intermediário.
Para isso, eu faço o seguinte:
select Idioma,
COUNT(distinct(Candidato)) as Total,
count(CASE WHEN Fluência = 1 THEN 'Básico' ELSE NULL END) as Básico,
count(CASE WHEN Fluência = 2 THEN 'Intermediário' ELSE NULL END) as Intermediário,
count(CASE WHEN Fluência = 3 THEN 'Avançado' ELSE NULL END) as Avançado
from tabela
group by Idioma
O resultado é:
Idioma Total Básico Intermediário Avançado
Inglês 2 2 0 0
Espanhol 3 1 1 1
Francês 1 0 1 0
Porém, se tiver um registro duplicado, ou seja, de dois candidatos, se um aparecer 3 vezes e outro 2 vezes na tabela com o Inglês básico, o resultado vai ser assim:
Idioma Total Básico Intermediário Avançado
Inglês 2 5 0 0
Espanhol 3 1 1 1
Francês 1 0 1 0
Como eu faço nesse caso para contar somente os registros únicos?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.