Parto de esta tabla:
Código SQL:
Ver original
propietario | parcela_cdad | sup_cdad | parcela_cat | sup_cat | cultivo _______________________________________________________________________ Fulano | parcela1 | 250 |Parcela_cat_1| 50 |cultivo1 Fulano | parcela1 | 250 |Parcela_cat_2| 120 |cultivo2 Fulano | parcela1 | 250 |Parcela_cat_3| 80 |cultivo3 Fulano | parcela1 | 250 |Parcela_cat_4| 100 |cultivo4 Mengano | parcela2 | 100 |Parcela_cat_5| 50 |cultivo1 Mengano | parcela2 | 100 |Parcela_cat_6| 50 |cultivo2
A partir de esta tabla quiero obtener otra que sólo me muestre la mayor sup_cat de las que componen una sola parcela_cdad, y que en caso de que las superficies sean iguales, como en el caso de la Parcela_cat_5 y Parcela_cat_6, ambas pertenecientes a parcela2, de forma arbitraria me coja la primera.
Y esto es lo que he hecho:
1.- Añado una columna con la mayor superficie catastral perteneciente a cada parcela_cdad:
Esta es la consulta (PostgreSQL):
Código SQL:
Ver original
CREATE VIEW cult AS SELECT propietario, parcela_cdad, sup_cdad, parcela_cat, sup_cat, MAX(sup_cat) OVER (PARTITION BY parcela_cdad) AS mayor_sup_cat, cultivo FROM parcelas;
Y esta es la Vista:
Código SQL:
Ver original
propietario | parcela_cdad | sup_cdad | parcela_cat | sup_cat |mayor_sup_cat | cultivo ______________________________________________________________________________________ Fulano | parcela1 | 250 |Parcela_cat_1| 50 | 120 |cultivo1 Fulano | parcela1 | 250 |Parcela_cat_2| 120 | 120 |cultivo2 Fulano | parcela1 | 250 |Parcela_cat_3| 80 | 120 |cultivo3 Fulano | parcela1 | 250 |Parcela_cat_4| 100 | 120 |cultivo4 Mengano | parcela2 | 100 |Parcela_cat_5| 50 | 50 |cultivo1 Mengano | parcela2 | 100 |Parcela_cat_6| 50 | 50 |cultivo2
Ahora selecciono los registros cuya sup_cat sea igual a la mayor:
Código SQL:
Ver original
SELECT * FROM cult WHERE sup_cat=mayor_sup_cat;
Y esta es la salida:
Código SQL:
Ver original
propietario | parcela_cdad | sup_cdad | parcela_cat | sup_cat |mayor_sup_cat | cultivo ______________________________________________________________________________________ Fulano | parcela1 | 250 |Parcela_cat_2| 120 | 120 |cultivo1 Mengano | parcela2 | 100 |Parcela_cat_5| 50 | 50 |cultivo1 Mengano | parcela2 | 100 |Parcela_cat_6| 50 | 50 |cultivo2
Este caso se me da pocas veces, pero como existe, pues hay que saber tratarlo.
Se interpreta como que la parcela2 esta compuesta por dos parcelas catastrales, del mismo tamaño y diferentes cultivos. Este es el caso en el que he de seleccionar una de forma arbitraria, y, en definitiva, la pregunta es:
¿Cómo seleccionar el primero de los dos registros cuya columna parcela_cdad es igual a parcela2?
Y opcionalmente....este camino que intento seguir es el correcto o hay formas más lógicas o rápidas de conseguirlo?