Obtener el registro máximo con diferentes valores usando cypher
Tengo un gráfico con datos espaciales usando el complemento espacial.
Este gráfico tiene "Zonas de amenaza" (polígonos) que pueden estar encima del otro para que también tengan una propiedad de índice z.
Cada "Zona de amenaza" se adjunta a escenarios de amenaza 1 a N, a veces se adjuntan varias "Zonas de amenaza" al mismo escenario de amenaza, con diferentes propiedades.
Estoy tratando de obtener la zona de amenaza superior para cada escenario de amenaza, según el índice z, para una ubicación específica.
Esta es mi consulta actual, que es casi perfecta:
MATCH (asset:Asset{name:'Asset Name'})-[]-(ara:AssetRiskAssessment)
WITH asset, ara
CALL spatial.intersects('threat_zones',asset.wkt) YIELD node
WITH node, asset, ara
MATCH (node)<-[:FOR]-(tss:ThreatScenarioScore)-[]-(ts:ThreatScenario)
RETURN ts.name, max(node.zindex) AS zindex, tss.intention, tss.capability
ORDER BY ts.name, zindex
Mi problema: si eliminotss.intenion
, tss.capability
Estoy obteniendo lo que estoy buscando (cada escenario de amenaza relevante de la zona correcta) pero lo que necesito de eso es eltss.intention
ytss.capability
. Como sus valores son diferentes entre zonas, la función max los considera como registros diferentes.
¿Hay una mejor manera de usar la función max para obtener lo que quiero y / o usar una consulta anidada para extraer la intención / capacidad (que es lo que busco)?