Tengo la tabla:
Código:
region, estado, municipio, parroquia, centro poblado y causa, son respectivamente, otras tablas, que tienen un ID y una DescripciónCREATE TABLE sal04 ( id serial NOT NULL, reg_001 character varying(2) NOT NULL, est_001 character varying(2) NOT NULL, mun_001 character varying(2) NOT NULL, par_001 character varying(2) NOT NULL, cpo_001 character varying(3) NOT NULL, sal04_001 character varying(4) NOT NULL, sal02_001 integer NOT NULL, sal04_003 integer, sal04_004 integer, sal04_005 integer ); COMMENT ON TABLE sal04 IS 'Registro de Morbilidad'; COMMENT ON COLUMN sal04.reg_001 IS 'Región'; COMMENT ON COLUMN sal04.est_001 IS 'Estado'; COMMENT ON COLUMN sal04.mun_001 IS 'Municipio'; COMMENT ON COLUMN sal04.par_001 IS 'Parroquia'; COMMENT ON COLUMN sal04.cpo_001 IS 'Centro Poblado'; COMMENT ON COLUMN sal04.sal04_001 IS 'Año de levantamiento de la información'; COMMENT ON COLUMN sal04.sal02_001 IS 'Causa de morbilidad'; COMMENT ON COLUMN sal04.sal04_003 IS 'Número de varones'; COMMENT ON COLUMN sal04.sal04_004 IS 'Número de hembras'; COMMENT ON COLUMN sal04.sal04_005 IS 'Total varones y hembras';
Luego, quiero una vista, que me traiga la cosa más o menos así:
año, region, estado, municipio, parroquia, centrpo poblado, causa, número de varones, número de hembras, total, porcentaje
donde la forma más general, sería algo así:
Código:
Ahora, en el caso de tener criterios, digamos, poder seleccionar el año, una región, estado, municipio... sería algo como pasarle a la consulta un WHERE al final de la consulta, pero también el mismo WHERE al cálculo del porcentaje... peeeero, es opcional que reciba esos WHERESELECT sal04.sal04_001, region.reg_002, estado.est_002, municipio.mun_002, parroquia.par_002, centro_poblado.cpo_002, sal02.sal02_002, sal04.sal04_005, sal04.reg_001, sal04.est_001, sal04.mun_001, sal04.par_001, sal04.cpo_001, sal04.sal02_001, round((sal04.sal04_005 * 100)::numeric / (( SELECT sum(sal04.sal04_005) AS sum FROM sal04))::numeric(10,2), 2) AS porcentaje FROM sal04 JOIN region ON sal04.reg_001::text = region.reg_001::text JOIN estado ON sal04.reg_001::text = estado.reg_001::text AND sal04.est_001::text = estado.est_001::text LEFT JOIN municipio ON sal04.reg_001::text = municipio.reg_001::text AND sal04.est_001::text = municipio.est_001::text AND sal04.mun_001::text = municipio.mun_001::text LEFT JOIN parroquia ON sal04.reg_001::text = parroquia.reg_001::text AND sal04.est_001::text = parroquia.est_001::text AND sal04.mun_001::text = parroquia.mun_001::text AND sal04.par_001::text = parroquia.par_001::text LEFT JOIN centro_poblado ON sal04.reg_001::text = centro_poblado.reg_001::text AND sal04.est_001::text = centro_poblado.est_001::text AND sal04.mun_001::text = centro_poblado.mun_001::text AND sal04.par_001::text = centro_poblado.par_001::text AND sal04.cpo_001::text = centro_poblado.cpo_001::text JOIN sal02 ON sal04.sal02_001 = sal02.id;
alguna luz?