Skip site navigation (1) Skip section navigation (2)

Re: Obtener los 3 valores mas altos por grupo de una serie de registros

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: "Alejandro D(dot) Burne" <alejandro(dot)dburne(at)gmail(dot)com>
Cc: PostgreEs <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Obtener los 3 valores mas altos por grupo de una serie de registros
Date: 2008-09-21 12:37:47
Message-ID: 48D6401B.7080306@soft-com.es (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Alejandro D. Burne escribió:
> Alguien tiene idea de como armar una consulta sql (si es que se puede)
> para obtener los 3 valores máximos y agrupandolos por una determinada
> columna, por ejemplo teniendo los siguientes datos:
> 

Posible es, pero dudo mucho de la eficiencia con tablas grandes.

postgres=# CREATE TABLE pruebas.test3 (c1 integer NOT NULL, c2 integer NOT NULL);
CREATE TABLE
postgres=# insert into pruebas.test3 values
postgres-#     (1,1),(1,2),(1,3),(1,4),(1,5),
postgres-#     (2,1),(2,2),(2,3),(2,4),(2,5),
postgres-#     (3,1),(3,2),(3,3),(3,4),(3,5),(3,5),
postgres-#     (4,1),(4,1),(4,5),(4,5),(4,5);
INSERT 0 21
postgres=# select t3.c1, t3.c2
postgres-# from pruebas.test3 t3
postgres-# where
postgres-#     (select count(*) from
postgres(#         (select * from pruebas.test3 g3 group by g3.c1, g3.c2) w3
postgres(#         where w3.c1 = t3.c1 and w3.c2 > t3.c2
postgres(#     ) < 3
postgres-# group by t3.c1, t3.c2
postgres-# order by t3.c1, t3.c2 desc;
  c1 | c2
----+----
   1 |  5
   1 |  4
   1 |  3
   2 |  5
   2 |  4
   2 |  3
   3 |  5
   3 |  4
   3 |  3
   4 |  5
   4 |  1
(11 filas)



Saludos,

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.

In response to

Responses

pgsql-es-ayuda by date

Next:From: Raúl Andrés Duque MurilloDate: 2008-09-21 13:20:44
Subject: Re: Obtener los 3 valores mas altos por grupo de una serie de registros
Previous:From: Raúl Andrés Duque MurilloDate: 2008-09-21 12:05:36
Subject: Re: Obtener los 3 valores mas altos por grupo de una serie de registros

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group