2014-04-01 7:34 GMT-05:00 Pelluco Pelluco <[email protected]>:
> Hola! disculpen el atrevimiento pero recurro a ustedes para una pequeña
> consulta, obviamente sobre SQL
> Miren si tengo una seria de registro como estos
>
> data1 | data2|data3
> uno     xxxx   1
> uno     xxyy  2
> dos     ffffff    2
> tres    yyyy   4
> tres    ddd    2
>
> como puedo hacer una sql (yo trabajo en postgres) que me permita sacar un
> listado como este:
> data1 | data2|data3
> uno    |  xxxx  |  1
> dos     | ffffff    | 2
> tres    | ddd   |  2
>
> osea que priorice por el menor, en este caso, data3.
>

Cualquiera de estas dos formas te sirve, si estas usando postgres 8.4
o superior creo que la segunda es mas óptima pero podría estar
equivocado:

postgres=# select data1, data2, data3 from tt_test a where data3 =
(select min(data3) from tt_test b where a.data1 = b.data1);
 data1 | data2  | data3
-------+--------+-------
 uno   | xxxx   |     1
 dos   | ffffff |     2
 tres  | ddd    |     2
(3 filas)

postgres=# with datos as (select data1, data2, data3, row_number()
over (partition by data1 order by data3) orden from tt_test)
select data1, data2, data3 from datos where orden = 1;
 data1 | data2  | data3
-------+--------+-------
 dos   | ffffff |     2
 tres  | ddd    |     2
 uno   | xxxx   |     1
(3 filas)


-- 
Jaime Casanova         www.2ndQuadrant.com
Professional PostgreSQL: Soporte 24x7 y capacitación
Phone: +593 4 5107566         Cell: +593 987171157

-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a