7
respostas

Sub-Query

Srs, bom dia!

A minha sub-query está retornando um valor hexadecimal, já tentei usar as funções round e cast mas sem sucesso. O interessante é que no meu primeiro SQL essas funções funcionam perfeitamente, se eu isolar o select da sub-query em um único select também funciona.

Eu vi uma FAQ na Oracle que os valores apresentados na sub-queries são String por isso não é possível converter usando os comando round e cast. Se alguém puder ajudar eu agradeço. Segue o meus script.

```
select a.nome, c.nome,  avg(n.nota), avg(n.nota) - (select cast(avg(n.nota) as numeric(6,2)) from nota n)  from nota n 
    join resposta r on r.id = n.resposta_id
    join exercicio e on e.id = r.exercicio_id
    join secao s on s.id = e.secao_id
    join curso c on c.id = s.curso_id
    join aluno a on r.aluno_id = a.id
group by c.nome, a.nome;
```
7 respostas

Oi Leandro a sua sub query está utilizando o mesmo aliás da sua query principal from nota n, pode ser aí um problema, muda o aliás para t, sei lá, talvez isso já resolva se o erro persistir avisa.

Joel, bom dia!

Eu executei a alteração sugerida, mas não surgiu efeito. Obrigado pelo retorno.

Oi Leandro, como os campos são a mesma coluna da mesma tabela também não é necessário fazer o cast

Esquece eu vi a função avg lá

na verdade você está utilizando a função avg nos dois lados, então realmente você pode retirar o custo ou aplicar do outro lado também, tenta isso, qualquer coisa me fala

Joel,

Entendo. Meu objetivo é calcular a subtração da media do aluno vs media geral, por isso eu estou usando avg em ambos os lados.

Eu penso que uma solução seria tentar converter o valor da sub-string em Numeric. Eu vi na FAQ da Oracle que uma sub-query retorna uma string. Você sabe como eu poderia fazer essa conversão?

Oi Leandro eu entendi o uso do avg, o problema é o cast, tenta retirar o cast, mas sinceramente eu nunca ouvi falar de que uma sub query retornaremos string, me manda o link para eu dar uma olhada nisso. Faz o teste retira o cast.