Buenos días a todos desde Madrid,
les planteo un consulta que no consigo plantear para obtener un único
registro por cada elemento empresa.
Imaginen una tabla definida y alimentada así:
drop table if exists mitabla;
create temp table mitabla (
idempresa integer,
idminsector integer,
minsector text,
idsector integer,
sector text,
idarea integer,
area text);
insert into mitabla values (208560,184,'Distrib. Alimentaria
Mayorista',24,'Cash & Carry',1,'Alimentación');
insert into mitabla values (208560,184,'Distrib. Alimentaria
Mayorista',49,'Distrib. Base Alimentaria Mayorista',1,'Alimentación');
insert into mitabla values (208560,184,'Distrib. Alimentaria
Mayorista',12,'Centrales de Compra',3,'Comercial');
insert into mitabla values (200152,360,'Informática para
Hostelería',79,'Equipamiento para Hoteles',5,'Hoteles');
insert into mitabla values (200152,360,'Informática para
Hostelería',53,'Equipamiento para Restauración',11,'Restauración');
Necesito obtener un único registro (mínimo id) por idempresa e
idminsector. Los resultados que espero obtener son:
208560 - 184 - 'Distrib. Alimentaria Mayorista' - 24 - 'Cash & Carry' -
1 - 'Alimentación'
200152 - 360 - 'Informática para Hostelería' - 79 - 'Equipamiento para
Hoteles' - 5 - 'Hoteles'
Hasta ahora sólo tengo esta aproximación pero la veo muy poco eficiente
en la BD real con 140000 registros aprox.
select mitabla.idempresa, mitabla.idminsector, mitabla.minsector,
mitabla.idsector, mitabla.sector, mitabla.idarea, mitabla.area
from mitabla
where (mitabla.idempresa, mitabla.idminsector, mitabla.idsector) =
(select tabsector.idempresa, tabsector.idminsector,
min(tabsector.idsector) as idsector
from mitabla as tabsector
where (tabsector.idempresa, tabsector.idminsector, tabsector.idarea) =
(select tabarea.idempresa, tabarea.idminsector,
min(tabarea.idarea) as idarea
from mitabla as tabarea
where mitabla.idempresa = tabarea.idempresa
and mitabla.idminsector = tabarea.idminsector
group by tabarea.idempresa, tabarea.idminsector)
group by tabsector.idempresa, tabsector.idminsector);
¿Alguna sugerencia, please?
Muchas gracias de antemano.
PD: postgresql 9.3
-
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