Eu
Cita:
Iniciado por huesos52 cacr
Habría que mirar que valores tienen las tablas y a que tabla pertenecen los campos que llamas en el select.
La estructura es:
Código:
# \d+ estado
Tabla «estado»
Columna | Tipo | Modificadores | Descripción
---------+-----------------------+---------------+---------------------
reg_001 | character varying(2) | not null | Código de la Región
est_001 | character varying(2) | not null | Código del Estado
est_002 | character varying(35) | not null | Nombre del Estado
=# \d+ agri04
Tabla «agricola.agri04»
Columna | Tipo | Modificadores | Descripción
------------+----------------------+-----------------------------------------------------+----------------------------------------
id | integer | not null default nextval('agri04_id_seq'::regclass) |
reg_001 | character varying(2) | not null |
est_001 | character varying(2) | not null |
agri04_001 | character varying(4) | not null | Año de levantamiento de la información
agri03_001 | integer | | Rubro
agri04_003 | numeric(10,2) | | Superficie Sembrada en Fundación
agri04_004 | numeric(10,2) | | Superficie Sembrada en Renovación
agri04_005 | numeric(10,2) | | Total superficie sembrada
algunos datos:
Código:
# SELECT * FROMestado;
reg_001 | est_001 | est_002
---------+---------+----------
06 | 14 | Mérida
06 | 20 | Táchira
06 | 21 | Trujillo
(3 filas)
# SELECT id, reg_001, est_001, agri04_001, agri04_003, agri04_004, agri04_005 FROM agri04 LIMIT 5;
id | reg_001 | est_001 | agri04_001 | agri04_003 | agri04_004 | agri04_005
------+---------+---------+------------+------------+------------+------------
334 | 06 | 14 | 2005 | | | 62.00
583 | 06 | 14 | 2004 | | | 60.00
5500 | 06 | 20 | 2007 | | | 116.55
5498 | 06 | 20 | 2007 | | | 116.55
5499 | 06 | 20 | 2007 | | | 11655.00
(5 filas)
Cita:
Iniciado por huesos52 Cabe aclarar que cuando tienes valores nulos y haces un sum, solo sumará aquellos que tienen valores y omitirá los nulos.
Está clarísimo, sí no tiene nada que sumar, pues no suma nada.
Ahora, normlamente, con selects que no involucran campos con funciones de agregación, el join me devolvería los 3 estados aún y cuando sobre éstos no existan datos. Tal es el ejemplo de la documentación [0]
Código:
To put this together, assume we have tables t1:
num | name
-----+------
1 | a
2 | b
3 | c
and t2:
num | value
-----+-------
1 | xxx
3 | yyy
5 | zzz
en la que, por ejemplo:
Código:
SELECT * FROM t1 LEFT JOIN t2 USING (num);
num | name | value
-----+------+-------
1 | a | xxx
2 | b |
3 | c | yyy
(3 rows
Por lo que empiezo a asumir, que con funciones de agregación, la cosa puede ser diferente...
Cita:
Iniciado por huesos52 Para evitar esto podrías probar algo así:
Código SQL:
Ver originalSELECT est_002, SUM(COALESCE(agri04_005,0))
FROM agri04 LEFT OUTER JOIN public.estado USING (reg_001, est_001)
WHERE agri04_001 = '2006'
GROUP BY est_002
ORDER BY est_002;
saludos
nop, no funciona...
[0]http://www.postgresql.org/docs/current/static/queries-table-expressions.html