Re: Duda

From: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
To: Esneiker Enriquez Cabrera <eenriquez(at)cav(dot)desoft(dot)cu>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda
Date: 2019-02-28 20:04:00
Message-ID: CAASDfF2_4Fd=k16Mhrm7uv+Vcx8KxpvpJdi-0KBrXkhoY8XFkQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 (<
eenriquez(at)cav(dot)desoft(dot)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.:* eenriquez(at)cav(dot)desoft(dot)cu
>
>
>
> *De:* Anthony Sotolongo [mailto:asotolongo(at)gmail(dot)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 (<
> eenriquez(at)cav(dot)desoft(dot)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.:* eenriquez(at)cav(dot)desoft(dot)cu
>
>
>
> *De:* Anthony Sotolongo [mailto:asotolongo(at)gmail(dot)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 (<
> eenriquez(at)cav(dot)desoft(dot)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.:* eenriquez(at)cav(dot)desoft(dot)cu
>
>
>
>

In response to

  • RE: Duda at 2019-02-28 19:55:29 from Esneiker Enriquez Cabrera

Responses

  • RE: Duda at 2019-02-28 20:16:39 from Esneiker Enriquez Cabrera

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Esneiker Enriquez Cabrera 2019-02-28 20:16:39 RE: Duda
Previous Message Esneiker Enriquez Cabrera 2019-02-28 19:55:29 RE: Duda