neo4j - Neo4J子查询相同的属性来计算比率
问题描述
我正在使用推文图。我正在尝试获取西班牙语推文和英语推文之间的比率。
按语言检查推文数量时:
MATCH (twtEs:Tweet)<-[:HAS_WRITEN]-()-[:HAS_AS_PROFILE_LANGUAGE]->(l:Language)
RETURN DISTINCT l.languageCode, count(*)
\\ Result:
╒════════════════╤══════════╕
│"l.languageCode"│"count(*)"│
╞════════════════╪══════════╡
│"en" │165392 │
├────────────────┼──────────┤
│"es" │73693 │
└────────────────┴──────────┘
我们可以看到每种语言的计数。
但是当试图直接计算比率时:
MATCH (twtEs:Tweet)<-[:HAS_WRITEN]-()-[:HAS_AS_PROFILE_LANGUAGE]->(:Language{languageCode:'es'})
WITH count(twtEs) AS tweetsEs
MATCH (twtEn:Tweet)<-[:HAS_WRITEN]-()-[:HAS_AS_PROFILE_LANGUAGE]->(:Language{languageCode:'en'})
WITH count(twtEn) as tweetsEn, tweetsEs
RETURN tweetsEs/tweetsEn as RatioTweetsEsvsEn;
\\ Result:
╒═══════════════════╕
│"RatioTweetsEsvsEn"│
╞═══════════════════╡
│0 │
└───────────────────┘
这就是我得到的,它应该是 0,44557。我一直在检查 Stackoverflow 中的文档和其他答案,但没有找到类似的示例。可能第二个查询不正确,但我正在努力解决它。
提前致谢。
我在跑:
- Neo4j 浏览器版本:3.2.20
- Neo4j 服务器版本:3.5.8(社区)
解决方案
这是因为计数值是整数。
例如 :
WITH 165392 AS v1, 73693 AS v2
RETURN v1/v2
╒═══════╕
│"v1/v2"│
╞═══════╡
│2 │
└───────┘
您可以将它们转换为浮点数:
WITH 165392 AS v1, 73693 AS v2
RETURN v1*1.0f/v2*1.0f
╒══════════════════╕
│"v1*1.0f/v2*1.0f" │
╞══════════════════╡
│2.2443379968246644│
└──────────────────┘
哪个会给你:
MATCH (twtEs:Tweet)<-[:HAS_WRITEN]-()-[:HAS_AS_PROFILE_LANGUAGE]->(:Language{languageCode:'es'})
WITH count(twtEs) AS tweetsEs
MATCH (twtEn:Tweet)<-[:HAS_WRITEN]-()-[:HAS_AS_PROFILE_LANGUAGE]->(:Language{languageCode:'en'})
WITH count(twtEn) as tweetsEn, tweetsEs
RETURN tweetsEs*1.0f/tweetsEn*1.0f as RatioTweetsEsvsEn;
推荐阅读
- spring-boot - SpringDoc app-doc.yaml 不显示招摇文档
- jberet - JBeret 排队机制
- javascript - 当我的井字游戏是 O 时,我的井字游戏如何将获胜者返回为 X
- csv - bash 脚本继续显示“不存在。文件”
- flutter - 在相机应用程序中添加矩形覆盖并在颤动中裁剪肖像图像
- json - 使用高阶函数从帐户中提取联系人
- spring-boot - SecurityConfig 中出现 SpringSecurity + AWS Cognito 连接错误
- c# - 单击一个 Windows 弹出窗口
- regex - Powershell - 如何根据各种字符和 10 位数字拆分字符串?
- python - 如何在 Python 中仅返回选定的 API 参数