Porque lo que hago es que cuento registros del negocio (incidencias) que estén 
asociados a la unidad y al tipo de servicio correspondientes.

Saludos,
M.Sc. 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.: 53 33 22 8971, email.: eenriq...@cav.desoft.cu


-----Mensaje original-----
De: Gilberto Castillo [mailto:gilberto.casti...@etecsa.cu] 
Enviado el: lunes, 08 de junio de 2015 9:30
Para: Esneiker Enriquez Cabrera
CC: 'POSTGRES'
Asunto: Re: [pgsql-es-ayuda] optimizacion



Uhmmm, usar todo esos Count es una locura, pero si es necesario.

¿porque ya que usas un laso no cuenta tu mismo sumando en una variable?


> Saludos a todos los amigos de la comunidad.
>
> Les escribo porque tengo un problema y no logro encontrar una buena 
> forma de resolverlo. Tengo una función para obtener reportes 
> estadísticos donde debo retornar el nombre de las unidades 
> organizativas, los nombres de los tipos de servicios y los totales, de 
> la siguiente forma:
>
>
> Unidad
>
> Tipo de servicio
>
> T1
>
> T2
>
> T3
>
> T4
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> El problema es que entre la tabla de unidades organizativas y tipos de 
> servicio no hay relación directa, sino a través de otras tablas del 
> negocio.
> Necesito tirar todas las unidades contra todos los tipos de servicio.
>
> La solución que he dado hasta el momento es con un ciclo for recorrer 
> la tabla tipo de servicio e ir calculando los totales e irlos 
> insertando en una tabla temporal para al final devolver los valores, 
> donde evidentemente esto provoca problemas de rendimiento, el código 
> es el siguiente(cortado para no
> abrumar):
>
>
>
> for aid_elemento,adescripcion from vw_nmtipo_servicio order by 
> tipo_servicio loop
>
>     SQLText = 'INSERT INTO estadistico SELECT id, nombre,
>
>                                            (SELECT COUNT(distinct
> vw_registro_expediente_incidencia.id) FROM 
> vw_registro_expediente_incidencia WHERE ...) AS t1,
>
>                                            (SELECT COUNT(distinct
> vw_registro_expediente_incidencia.id) FROM 
> vw_registro_expediente_incidencia
> ...) AS t2,
>
>                                            (SELECT COUNT(distinct
> vw_registro_expediente_incidencia.id) FROM 
> vw_registro_expediente_incidencia
> ...) AS t3,
>
>                                            (SELECT COUNT(distinct
> vw_registro_expediente_incidencia.id) FROM 
> vw_registro_expediente_incidencia
> ...) AS t4
>
>
> '''||adescripcion_elemento||'''::character varying as criterio1 FROM 
> nmunidad_org WHERE (nmunidad_org.id IN ('||alista_id_nivel||'))';
>
>     execute SQLText;
>
>     SQLText = '';
>
>    end loop;
>
>
>
> Espero que me puedan dar alguna recomendación para optimizar el diseño.
>
> Saludos,
>
> M.Sc. 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.: 53 33 22 8971, email.:  <mailto:eenriq...@cav.desoft.cu> 
> eenriq...@cav.desoft.cu
>
>
>
> ---
> This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE 
> running at host imx2.etecsa.cu Visit our web-site: 
> <http://www.kaspersky.com>, <http://www.viruslist.com>
>


Saludos,
Gilberto Castillo
ETECSA, La Habana, Cuba
 

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de 
virus 11728 (20150603) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com
 
 

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de 
virus 11728 (20150603) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com
 


-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a