04/08/2004

Sql Muito estranho...Union ?????

PESSOAL ,

Boa Tarde!
Estou tentando contar quantos funcionários estão suspensos e quantos não estão suspensos. E para isso executo um Sql utilizando o Union All, porém ele só me retorna os valores do 1º Sql. alguém poderia me ajudar.
Agradeço desde já.

Obs: A consulta é em uma mesma tabela

Segue abaixo a estrutura da tabela:

FUNCIONARIO

CPF,
SETOR,
NOME,
DATANASCIMENTO,
SUSPENSO

Segue abeixo o Sql utilizado:

SELECT SETOR, COUNT(*) as SUSPENSO FROM FUNCIONARIO
WHERE SUSPENSAO = ´S´
group by SETOR
union ALL
SELECT CODSETOR, COUNT(*) as NAOSUSPENSO FROM FUNCIONARIO
WHERE SUSPENSAO = ´N´
group by CODSETOR


Mmbarros

Respostas

05/08/2004

Paulo_amorim

Olá

Imaigno que na segunda query, onde vc coloca
SELECT [b:c173104089]CODSETOR[/b:c173104089]

você tenha querido dizer [b:c173104089]SETOR[/b:c173104089], não? Talvez tenha isso

Fora isso, tente colocar um campo IND_STATUS, que preenche ´S´ na primeira query e ´N´ na segunda... talvez ajude (se bem q tem Union ALL ne...seila)

Espero que ajude

Até+


Responder Citar

05/08/2004

Emiliano

Caro amigo,


Se vc quer saber a quantidade de suspenso e não suspensos por setor é so executar o seguinte SQL:

SELECT SETOR, SUSPENSO, Count(SUSPENSO) AS QTD_POR_SETOR
FROM FUNCIONARIO
GROUP BY SETOR, SUSPENSO;

Agora, se vc quiser saber a quantidade total de suspesos e não suspensos é so executar o seguinte:

SELECT SUSPENSO, COUNT(SUSPENSO) AS QTD_SUSPENSOS_NSUSPENSOS
FROM FUNCIONARIO
GROUP BY SUSPENSO;

UNION ALL é utilizado para união de duas tabelas.


Emiliano,

t+


Responder Citar

05/08/2004

Emerson

ou ainda:

[b:4210e1e295]todos os suspensos e não-suspensos por setor:[/b:4210e1e295]
SELECT Func.Setor, count(setor) Total,
    (select count(setor)
      from Funcionario where Setor=Func.Setor and Suspenso=´N´) Ativos,
    (select count(setor)
      from Funcionario where Setor=Func.Setor and Suspenso=´S´) Suspensos
From Funcionario Func
Group by Func.Setor

Retorno:
Setor   Total   Ativos   Suspensos
X         6         6           0
Y         19       14         5
Z         8         7           1



[b:4210e1e295]todos os funcionários suspensos e não suspensos:[/b:4210e1e295]
SELECT count(setor) Total,
    (select count(setor) from Funcionario where Suspenso=´N´) Ativos,
    (select count(setor) from Funcionario where Suspenso=´S´) Suspensos
From Funcionario Func

Retorno:
Total   Ativos   Suspensos
33       27         6


Responder Citar

05/08/2004

Mmbarros

Grande Emerson.en

Fico grato pela sua ajuda, ficou perfeito!
Mais uma vez muito obrigado!


Responder Citar