RE: Duda

From: "Esneiker Enriquez Cabrera" <eenriquez(at)cav(dot)desoft(dot)cu>
To: "'Anthony Sotolongo'" <asotolongo(at)gmail(dot)com>
Cc: "'POSTGRES'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Duda
Date: 2019-02-28 19:55:29
Message-ID: 000701d4cf9f$8ea0f590$abe2e0b0$@cav.desoft.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <mailto: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 <mailto: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 <mailto:eenriquez(at)cav(dot)desoft(dot)cu>

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

In response to

  • Re: Duda at 2019-02-28 15:54:37 from Anthony Sotolongo

Responses

  • Re: Duda at 2019-02-28 20:04:00 from Anthony Sotolongo

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Anthony Sotolongo 2019-02-28 20:04:00 Re: Duda
Previous Message Esneiker Enriquez Cabrera 2019-02-28 18:43:24 RE: Duda