Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

[SOLUCIONADO] ¿Como hacer esta selección en un sólo paso?

Estas en el tema de ¿Como hacer esta selección en un sólo paso? en el foro de PostgreSQL en Foros del Web. Tengo una tabla como esta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original id     | id_parc_cat | sub_sup | ------+-------------+---------+   4033 |     ...
  #1 (permalink)  
Antiguo 03/05/2016, 08:23
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
¿Como hacer esta selección en un sólo paso?

Tengo una tabla como esta:

Código SQL:
Ver original
  1. id    | id_parc_cat | sub_sup |
  2. ------+-------------+---------+
  3.  4033 |        2785 |   41336 |
  4.  4036 |        2785 |   18620 |  
  5.  4034 |        2785 |   20154 |    
  6.  4035 |        2785 |   15612 |  
  7.  4038 |        2785 |  228362 |  
  8.  4032 |        1724 |   58571 |      
  9.  4037 |        1724 |   23690 |

De esta tabla queiro que la consulta me muestre las filas con el campo sub_sup mayor para una misma id_parc_cat

Yo ahora lo resuelvo en dos pasos:
Código SQL:
Ver original
  1. SELECT id, id_parc_cat, sub_sup, MAX(sub_sup) OVER (PARTITION BY id_parc_cat) FROM cultivos;
Esto me dará esta tabla:
Código SQL:
Ver original
  1. id    | id_parc_cat | sub_sup | MAX|
  2. ------+-------------+---------+------------------------
  3.  4033 |        2785 |   41336 | 228362
  4.  4036 |        2785 |   18620 | 228362
  5.  4034 |        2785 |   20154 | 228362
  6.  4035 |        2785 |   15612 | 228362
  7.  4038 |        2785 |  228362 | 228362
  8.  4032 |        1724 |   58571 |  58571
  9.  4037 |        1724 |   23690 |  58571

Esta selección la almaceno en una vista.

Y luego selecciono los registros donde sub_sup=MAX en la vista creada.

Pero el caso es que me gustaría saber cómo se puede hacer esta operación en un sólo paso.

Saludos y gracias como siempre
__________________
Mi calculadora en Qt
  #2 (permalink)  
Antiguo 03/05/2016, 09:03
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: ¿Como hacer esta selección en un sólo paso?

Bueno, al final se me ha iluminado la bombilla y este es el resultado:
Código SQL:
Ver original
  1. SELECT t1.id, id_parc_cat, sub_sup FROM cultivos AS t1
  2. LEFT JOIN (SELECT id, MAX(sub_sup) OVER (PARTITION BY id_parc_cat) FROM cultivos) AS t2
  3. ON t1.sub_sup = t2.MAX
  4. GROUP BY t1.id,t1.id_parc_cat, t1.sub_sup, t2.MAX
  5. HAVING sub_sup=MAX
  6. ORDER BY id_parc_cat

Marco como solucionado
__________________
Mi calculadora en Qt

Etiquetas: fila
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:51.