Oracle - Consultas anidadas en Oracle (select dentro de otro select)

 
Vista:

Consultas anidadas en Oracle (select dentro de otro select)

Publicado por Jose (1 intervención) el 05/01/2021 05:45:22
Tengo una consulta que hice en otros manejadores (SQLite, MySQL y PostgreSQL), la cual me funcionó bajo la misma estructura en todos ellos, pero cuando voy a Oracle me da un error que dice:

1
"ORA-00937: not a single-group group function"

La consulta del problema es esta que les muestro. Al parecer, el problema está en las subconsultas de "VotantesAbstencion" y "PorcentajeAbstencion", por cuanto estoy anidando un select dentro de otro. Estoy buscando algunas ayudas, pero no encuentro algo que me especifique claramente cómo debo hacer la adaptación para Oracle.

1
2
3
4
5
6
7
8
9
10
SELECT sum(actovoto.participo) AS votantesparticipacion,
    ((sum(actovoto.participo) * 100) / count(actovoto.participo)) AS porcentajeparticipacion,
    ( SELECT count(actovoto_1.participo) AS count
           FROM actovoto actovoto_1
          WHERE (actovoto_1.participo = 0)) AS votantesabstencion,
    ( SELECT (( SELECT (count(actovoto_2.participo) * 100)
                   FROM actovoto actovoto_2
                  WHERE (actovoto_2.participo = 0)) / count(actovoto_1.participo))
           FROM actovoto actovoto_1) AS porcentajeabstencion
   FROM actovoto

Muchas gracias de antemano a quienes puedan orientarme sobre cuál modificación debo hacer, porque en verdad soy novato en Oracle (de hecho, estoy aprendiendo a usarlo y no se qué hacer en este caso).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Consultas anidadas en Oracle (select dentro de otro select)

Publicado por anonymous (15 intervenciones) el 05/01/2021 19:12:56
Alguno de esos querys al ejecutarse individualmente, seguro debe estar devolviendo error de: ORA-01427: single-row subquery returns more than one row, esto es que está devolviendo más filas que el subsiguiente query, entonces en alguno de ellos habrá que hacer necesariamente un Distinct para que devuelva valores únicos.

Pero lo que se observa es que no hay un agrupamiento, porque en el Select tienes funciones de agregado, y el lo que espera es un GROUP BY según el error: ORA-01427

Como no se conoce la estructura y datos de las tablas, es difícil decirte que hacer exactamente, y podría ser otra cosa lo que esté provocando el error.

Entonces la recomendación es ir probando individualmente cada query y a medida que vayan funcionando, ir concatenando uno y otro hasta armar el súper query que pretendes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar