Várias consultas de uma só vez

20/09/2004

0

Pessoal,

Estou usando o Oracle 9 e gostaria de saber como faço para ao invés de criar várias consultas separadas criar uma única onde me retorne todos os resultados que necessito.
Exemplo: (tentei dessa forma e não deu certo)
Select U.CodUsuario, U.NomeUsuario,
(Select Sum(Emitidos) from RelatoriosEmitidos X on X.CodUsuario=U.CodUsuario) as
Emitidos,
(Select Sum(Avaliados) from RelatoriosAvaliados X on X.CodUsuario=U.CodUsuario)
as Avaliados,
(Select AVG(Avaliados) from RelatoriosAvaliadosX on X.CodUsuario=U.CodUsuario)
as MediaAvaliados
from Usuarios U

Como resposta preciso ter nome do usuário, soma dos relatórios emitidos, soma dos relatórios avaliados e a média dos relatórios avaliados. Sendo que essa média deve ser a soma de três colunas da tabela dividido por 3. Se colocar AVG(Campo1), AVG(Campo2, AVG(Campo3) vou ter a média de cada coluna, mas tenho que depois somar as três e dividir por 3. Como posso fazer essa média direto na query via SQL?

Obrigada


Barbara.michele

Barbara.michele

Responder

Posts

20/09/2004

Djjunior

não testei mais deve funcionar

Select U.CodUsuario, U.NomeUsuario, A.sumEmitido, B.SumAvaliados, C.AVGAvaliados
from Usuarios U,
(Select Sum(Emitidos) as SumEmitido from RelatoriosEmitidos) A,
(Select Sum(Avaliados) as SumAvaliados from RelatoriosAvaliados) B,
(Select AVG(Avaliados) as AVGAvaliados from RelatoriosAvaliados) C


Responder

20/09/2004

Barbara.michele

Oi! Fiz como você falou, mas não está funcionando, está dando erro!!!


Responder

20/09/2004

Djjunior

qual a msg ?


Responder

20/09/2004

Barbara.michele

Coloquei só essa parte para testar:

select distinct USUARIO, A.EMITIDO
from sac
where uf = ´RJ´,
(SELECT COUNT(USUARIO) AS EMITIDO FROM SAC WHERE USUARIO = ´123´)

No final da linha where uf = ´RJ´, está exibindo o erro: ORA-00933: comando SQL não encerrado adequadamente.


Responder

21/09/2004

Djjunior

faça
select distinct USUARIO, A.EMITIDO
from sac
where uf = ´RJ´ [b:670ae3036f]and[/b:670ae3036f]
(SELECT COUNT(USUARIO) AS EMITIDO FROM SAC WHERE USUARIO = ´123´)

ai não dá erro, mas a consulta continua errada :x , pois não há nada que relacione as duas consultas, portanto está gerando um result set do tipo produto carteziano. Ou vc relaciona as duas ou ambas tem os mesmos critérios.

o certo seria algo do tipo

select distinct S.USUARIO, A.EMITIDO
from sac S, (SELECT USUARIO, COUNT(EMITIDO) AS EMITIDO FROM SAC WHERE USUARIO = ´123´ group by USUARIO) A
where s.USUARIO = a.USUARIO


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar