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)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta