Я использую neo4j для представления информации о работодателях и их предложениях в отношении здоровья. ie:
(client)-[OFFERED_PLAN]->(planOffering)-[HAS_PLAN_DETAIL {value:number}]->(benefitPlanType)
Я пытаюсь запросить этот график, чтобы получить список 50 лучших клиентов в ЦА, а затем определить число тех 50 клиентов, которые предлагают медицинский план (значение = 1) и сколько предлагается стоматологических (значение = 5). Я перепробовал много вариантов приведенного ниже запроса, но я думаю, что это самый близкий. Вывод этого в настоящее время будет возвращать одно и то же число для всех трех переменных, 25, что является числом этих клиентов, предлагающих стоматологические услуги.
MATCH (client:Client)-[:LOCATED_IN]->(:State {stateCode:'CA'})
LIMIT 50
with client as mc, client as dc, client
MATCH (mc)-[:OFFERED_PLAN]->(mp:PlanOffering)-[mbpt:HAS_PLAN_DETAIL]->(:BenefitPlanType),
(dc)-[:OFFERED_PLAN]->(:PlanOffering)-[dbpt:HAS_PLAN_DETAIL]->(:BenefitPlanType)
WHERE mbpt.value = 1 and dbpt.value = 5
with count(distinct(client.clientID)) as clientCount,
count(distinct(mc.clientID)) as numberMedicalClients,
count(distinct(dc.clientID)) as numberDentalClients
return *