Bueno, pues sigo de nuevo con mi proyecto que ya pensé que tenía resuelto, pero al final me falla una pieza (espero que la última)
Parto de esta tabla:
Código SQL:
Ver originalpropietario | 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 originalCREATE 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 originalpropietario | 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 originalSELECT * FROM cult
WHERE sup_cat=mayor_sup_cat;
Y esta es la salida:
Código SQL:
Ver originalpropietario | 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?