Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Calculo de fórmula con 2 campos de 2 tablas

Estas en el tema de Calculo de fórmula con 2 campos de 2 tablas en el foro de PostgreSQL en Foros del Web. Saludos Tengo una tabla de registro de nacimientos por año y por código político, más o menos así: nacimientos (region varchar(2), estado varchar(2), agno varchar(4), ...
  #1 (permalink)  
Antiguo 26/05/2010, 08:32
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Calculo de fórmula con 2 campos de 2 tablas

Saludos

Tengo una tabla de registro de nacimientos por año y por código político, más o menos así:

nacimientos (region varchar(2), estado varchar(2), agno varchar(4), numero_nacimientos smallint)

Y otra con la población por año y por código político, más o menos así:
poblacion ((region varchar(2), estado varchar(2), agno varchar(4), mujeres smallint), edad smallint)

Lo que las "une" es el código político y el año de la información.

Estoy tratando de sacar una consulta que me devuelva la tasa de fecundidad cuya fórmula es:
fecundidad = ((nacimientos / población femenina en edad entre 12 y 49 años) * 1000)

A patica, saco de una tabla los nacimientos:
mi_bd=# SELECT sum(numero_nacimientos) , estado FROM salud.nacimientos WHERE region = '06' AND agno = '2003' GROUP BY estado ORDER BY estado;
sum | estado
-------+---------
33148 | 14
12455 | 21
(2 filas)

mi_bd=# SELECT sum(mujeres) , estado FROM demografia.poblacion WHERE edad >= 12 AND edad <= 49 AND region = '06' AND agno = '2003' GROUP BY estado ORDER BY estado;
sum | estado
--------+---------
227326 | 14
145302 | 20
165668 | 21
(3 filas)

Pero quiero hacerla en una sola consulta para sacarle provecho a la BD, intenté con algo simple como:
SELECT est_001, sum(dem01_006) as mujeres, sum(sal11_004) as nacimientos
mi_bd-# FROM demografia.poblacion
mi_bd-# JOIN salud.nacimientos USING (region, estado)
mi_bd-# WHERE region = '06' AND demografia.agno = '2003' AND poblacion.agno = '2003' AND (edad >= 12 AND edad <= 49)
mi_bdr-# GROUP BY estado;
estado | mujeres | nacimientos
-------------+-----------------+----------
21 | 3313360 | 9515620
14 | 24778534 | 28971352
(2 filas)

donde se observa que la consulta está recontra mala, jajaja

Luz?
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 26/05/2010, 09:01
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Calculo de fórmula con 2 campos de 2 tablas

Tal vez con subconsultas

Código SQL:
Ver original
  1. SELECT
  2. t1.estado,
  3. (t1.suma_nacimientos/t2.suma_mujeres*1000) AS fecundidad
  4. FROM
  5. (
  6.  SELECT
  7.  SUM(numero_nacimientos) ,
  8.  estado
  9.  FROM
  10.  salud.nacimientos
  11.  WHERE region = '06'
  12.  AND agno = '2003'
  13.  GROUP BY estado
  14.  ORDER BY estado
  15. ) AS t1
  16. JOIN
  17. (
  18.  SELECT
  19.  SUM(mujeres) ,
  20.  estado
  21.  FROM
  22.  demografia.poblacion
  23.  WHERE edad >= 12
  24.  AND edad <= 49
  25.  AND region = '06'
  26.  AND agno = '2003'
  27.  GROUP BY estado
  28.  ORDER BY estado
  29. ) AS t2
  30. ON
  31. t1.estado=t2.estado;

algo así sería.

No lo he probado.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 26/05/2010, 09:47
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Calculo de fórmula con 2 campos de 2 tablas

Gracias huesos52... asi mismo es... sólo le falta decirle al divisor que es de tipo numeric, y un round para retocar... nuevamente, mil gracias
__________________
Gracias de todas todas
-----
Linux!
  #4 (permalink)  
Antiguo 26/05/2010, 09:57
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Calculo de fórmula con 2 campos de 2 tablas

Pregunta: para sacarle provecho al motor, eso debería tirarlo o con una vista, una función o ambas...

En el where, el año es variable, como también la segregación del código político, por lo que en la lsita de campos, el código político podría variar...

Algún comentario?
__________________
Gracias de todas todas
-----
Linux!
  #5 (permalink)  
Antiguo 26/05/2010, 10:01
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Calculo de fórmula con 2 campos de 2 tablas

El tenerlo en una vista o en la consulta como está, no se presenta mejor aprovechamiento del motor. Es exactamente igual en ese sentido. Lo que si mejora es su facilidad de uso.

El hacerlo en una función puede ser bueno y de igual forma, sería mas fácil de usarlo. Esta es una buena opción.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 26/05/2010, 11:06
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Calculo de fórmula con 2 campos de 2 tablas

Vale... gracias... veré qué cosa hago
__________________
Gracias de todas todas
-----
Linux!

Etiquetas: calculo, campos, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:48.