You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j/Cypher计算职业技能类型占比时遇类型错误求助

问题分析与修复方案

错误根源

原查询存在两个核心问题:

  1. 全局总和误用:计算的total是所有职业技能权重的全局总和,并非单个职业的总权重,完全不符合按职业统计占比的需求。
  2. 类型不匹配:若r.b字段存储为字符串类型,直接参与除法运算会触发Cannot divide 'Long' by 'string'错误,必须先转为数值类型。

正确Cypher查询

要实现「各职业下不同类型技能的权重占比」,需按职业+技能类型分组统计,先计算单职业总权重,再推导各类型占比:

MATCH (b:BOC_beroep)-[r:MAPS_TO]->(s:Soft_Skill)
// 按职业分组,计算该职业的技能权重总和
WITH b, SUM(toFloat(r.b)) AS total_occupation_weight
// 再次匹配该职业的所有技能关联
MATCH (b)-[r:MAPS_TO]->(s:Soft_Skill)
// 按职业+技能类型分组,计算该类型的权重和
WITH b, r.type AS skill_category, total_occupation_weight, SUM(toFloat(r.b)) AS category_weight
RETURN 
  b.beroepstitel AS profession,
  skill_category,
  ROUND((category_weight / total_occupation_weight) * 100, 2) AS percentage
ORDER BY profession, percentage DESC

逻辑说明

  • 第一步WITH:按职业节点分组,算出每个职业的所有技能权重总和total_occupation_weight。
  • 第二步匹配:重新关联该职业的所有技能关系,确保后续统计的是当前职业下的技能类型。
  • 分组计算:按「职业+技能类型」聚合,算出该类型的权重总和category_weight,再除以职业总权重得到占比,用ROUND()保留两位小数优化展示。
  • 排序:最终结果按职业名称和占比降序排列,方便查看各职业内的技能类型分布。

内容的提问来源于stack exchange,提问作者Leyla Elkhamlichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:40:10