Re: Query con MIN posible sobre dos campos

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
>

In response to

Browse pgsql-es-ayuda by date

  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