From: | "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com> |
---|---|
To: | "Jose M(dot) Mencia" <jmencia(at)alimarket(dot)es> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Query con MIN posible sobre dos campos |
Date: | 2014-12-19 13:43:35 |
Message-ID: | CANm+PCBWX3Ujn+vFw5ik+ZAR6LMKNn9ngjZy-LCTjn-qOmXAwA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
José saliendo un poco del tema consultado, si es una tabla muy grande, te
sugiero que revises el diseño.
Guillermo Villanueva
El 19 de diciembre de 2014, 8:07, Jose M. Mencia <jmencia(at)alimarket(dot)es>
escribió:
> 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(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2014-12-23 05:25:34 | Re: problemas al replicar con slony |
Previous Message | Anthony Rafael Sotolongo León | 2014-12-19 13:29:14 | Re: Query con MIN posible sobre dos campos |