Várias consultas de uma só vez
20/09/2004
0
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
Posts
20/09/2004
Djjunior
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
20/09/2004
Barbara.michele
20/09/2004
Barbara.michele
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.
21/09/2004
Djjunior
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
Clique aqui para fazer login e interagir na Comunidade :)