Ahí viene lo de estudiar y comprender un poco más como funciona las CTE, vienen varios ejemplos en la documentación
de manera genérica puedes hacer un CTE lo más general posible y luego hacer el filtro abajo o hacer un 3 CTE distintas y consultarlas abajo, (con esto recorrerás veces la tabla ,peroalgo es algo) Saludos El jue., 28 feb. 2019 a las 16:56, Esneiker Enriquez Cabrera (< eenriq...@cav.desoft.cu>) escribió: > Hola, > > Estoy probando la solución que me diste y funciona bien. Ahora me salta > la duda en cómo escribirla cuando en las subconsultas tengo condiciones que > son diferentes. Disculpa la insistencia pero soy nuevo usando CTE y no > tengo ni idea de cómo podría escribir ese caso. > > > > Saludos, > > *M.Sc. Ing. Esneiker Enriquez Cabrera* > *Esp. B en Ciencias Informáticas* > > Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila. > Cuba. > *Telf.:* 266200 Ext 119, *email.:* eenriq...@cav.desoft.cu > > > > *De:* Anthony Sotolongo [mailto:asotolo...@gmail.com] > *Enviado el:* jueves, 28 de febrero de 2019 10:55 > *Para:* Esneiker Enriquez Cabrera > *CC:* POSTGRES > *Asunto:* Re: Duda > > > > Creo que puedo aplicar el CTE en tu caso, donde en ese CTE calcules los > count y retornes además tablax.id_procedencia, > > y luego hacer un join entre el CTE y tu consulta principal por el > id_procedencia > > > > Refina o ajusta un poco esta idea... a tu escenario > > > > WITH sub as ( > > select count(id) as cantidad,id_procedencia from tablax where > tablax.id_estado = 1 and tablax.fecha between valor1 and valor2 group by > id_procedencia > > ) > > Select clasificador, > > sub.cantidad > > From clasificadores, sub where sub.id_procedencia = > clasificadores.id_procedencia > > > > > > Saludos > > > > El jue., 28 feb. 2019 a las 12:01, Esneiker Enriquez Cabrera (< > eenriq...@cav.desoft.cu>) escribió: > > Muchas gracias Anthony por tu pronta recomendación, voy a revisar lo que > me mandas. > > Lo siguiente es algún ejemplo de criterios que uso, te lo pongo en rojo > > > > Select clasificador, > > (select count(id) from tablax where tablax.id_estado = 1 and > tablax.id_procedencia > = clasificadores.id_procedencia and tablax.fecha between valor1 and valor2) > as cantidad 1, > > (select count(id) from tablax where criterio) as cantidad 2, > > (select count(id) from tablax where criterio) as cantidad 3 > > From clasificadores where criterio > > > > > > Saludos, > > *M.Sc. Ing. Esneiker Enriquez Cabrera* > *Esp. B en Ciencias Informáticas* > > Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila. > Cuba. > *Telf.:* 266200 Ext 119, *email.:* eenriq...@cav.desoft.cu > > > > *De:* Anthony Sotolongo [mailto:asotolo...@gmail.com] > *Enviado el:* jueves, 28 de febrero de 2019 9:36 > *Para:* Esneiker Enriquez Cabrera > *CC:* POSTGRES > *Asunto:* Re: Duda > > > > Hola Esneiker, > > > > tal vez te pueda ayudar un poco de "azúcar sintáctica" de las funciones > de agregado con el filter(creo que desde 9.4 ) > https://www.postgresql.org/docs/9.4/sql-expressions.html > > > > y además puede que escribir las subconsultas en algún CTE, te permita > disminuir los recorridos de la tablax. > > > > > > Si pudieras enviar la consulta más terminada sobre todo con el "criterio" > se te pueda orientar un poco mejor > > > > > > > > Saludos > > > > > > > > > > > > El jue., 28 feb. 2019 a las 10:59, Esneiker Enriquez Cabrera (< > eenriq...@cav.desoft.cu>) escribió: > > Hola a todos, > > Necesito que me den sugerencias acerca de cómo puedo cambiar el diseño de > una consulta para mejorar el rendimiento. Necesito devolver resultados en > un reporte donde la salida tiene la forma: > > > > clasificador > > Cantidad1 > > Cantidad2 > > Cantidad3 > > Cantidad n > > Clasificador 1 > > 1 > > 0 > > 0 > > > > Clasificador 2 > > 1 > > 1 > > 0 > > > > Clasificador 3 > > 1 > > 1 > > 0 > > > > Clasificador n > > 1 > > 1 > > 0 > > > > > > Para obtener la información uso una consulta con el siguiente diseño: > > > > Select clasificador, > > (select count(id) from tablax where criterio) as cantidad 1, > > (select count(id) from tablax where criterio) as cantidad 2, > > (select count(id) from tablax where criterio) as cantidad 3 > > From clasificadores where criterio > > > > La cuestión es cómo podría mejorar el diseño de la consulta para mejorar > rendimiento porque en la tabla x hay muchos registros y la consulta se > demora. Por supuesto en los criterios filtro las subconsultas internas con > la externa pero no me parece que el diseño esté eficiente. > > Saludos, > > *M.Sc. Ing. Esneiker Enriquez Cabrera* > *Esp. B en Ciencias Informáticas* > > Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila. > Cuba. > *Telf.:* 266200 Ext 119, *email.:* eenriq...@cav.desoft.cu > > > >