【Cypher】数学函数(Mathematical Functions):对数值进行数学计算,例如:abs()、sqrt()、ceil()、floor() 、 round()、cos()、sin()

Cypher 中的数学函数(Mathematical Functions)详解


一、什么是数学函数?

Cypher 中的数学函数(Mathematical Functions)用于对数值进行数学计算

  • 这些函数适用于整数(Integer)和浮点数(Float)类型的数据。
  • 数学函数通常与 RETURNWITHSET 语句一起使用,可以在查询过程中对数据进行转换和计算。

二、Cypher 常见数学函数列表


函数名称描述示例
abs()取绝对值abs(-5)5
ceil()取大于等于指定数的最小整数ceil(4.3)5
floor()取小于等于指定数的最大整数floor(4.8)4
round()对数值进行四舍五入round(3.5)4
sqrt()计算平方根sqrt(9)3.0
sign()返回数值的符号 (-1, 0, 1)sign(-42)-1
rand()返回 0 到 1 之间的随机数rand()0.574 (示例)
e()返回自然常数 ee()2.718281828459045
exp()计算 e 的指定幂exp(2)7.389
log()计算自然对数log(2.718)1.0
log10()计算以 10 为底的对数log10(100)2.0
pi()返回圆周率 πpi()3.141592653589793
cos()计算角度的余弦值(弧度)cos(pi()/3)0.5
sin()计算角度的正弦值(弧度)sin(pi()/2)1.0
tan()计算角度的正切值(弧度)tan(pi()/4)1.0
acos()计算反余弦(返回弧度)acos(0.5)1.047
asin()计算反正弦(返回弧度)asin(1)1.5708
atan()计算反正切(返回弧度)atan(1)0.785
atan2()计算 y/x 的反正切(返回弧度)atan2(1, 1)0.785
haversin()计算半正矢(Haversine)距离haversin(1)0.2298

三、Cypher 数学函数详细解析


3.1 abs() - 取绝对值
RETURN abs(-42) AS result
  • 返回 42 的绝对值。
MATCH (n:Product)
RETURN n.name, abs(n.discount) AS positiveDiscount
  • 返回 Product 节点 discount 属性的绝对值。

3.2 ceil() - 向上取整
RETURN ceil(4.3) AS result
  • 4.3 向上取整,返回 5
MATCH (n:Product)
RETURN n.name, ceil(n.price) AS roundedPrice
  • 向上取整 Product 节点的 price 属性。

3.3 floor() - 向下取整
RETURN floor(4.8) AS result
  • 4.8 向下取整,返回 4
MATCH (n:Order)
RETURN n.id, floor(n.totalAmount) AS amount
  • 向下取整 OrdertotalAmount

3.4 round() - 四舍五入
RETURN round(3.5) AS result
  • 3.5 四舍五入为 4
MATCH (n:Invoice)
RETURN n.id, round(n.totalPrice) AS finalPrice
  • InvoicetotalPrice 进行四舍五入。

3.5 sqrt() - 计算平方根
RETURN sqrt(9) AS result
  • 返回 9 的平方根 3.0
MATCH (n:Point)
RETURN n.id, sqrt(n.x * n.x + n.y * n.y) AS distance
  • 计算点 (x, y) 到原点的距离。

3.6 sign() - 返回数值的符号
RETURN sign(-10) AS result
  • 返回 -1 表示负数。
MATCH (n:Transaction)
RETURN n.id, sign(n.amount) AS transactionType
  • 根据 amount 的符号确定交易类型。

3.7 rand() - 返回 0 到 1 之间的随机数
RETURN rand() AS randomValue
  • 生成一个 01 之间的随机数。
MATCH (n:User)
RETURN n.name, rand() AS luckyNumber
  • User 节点生成一个随机数。

3.8 e() - 返回自然常数 e
RETURN e() AS result
  • 返回自然常数 e 的值 2.718281828459045

3.9 exp() - 计算 e 的指定幂
RETURN exp(2) AS result
  • 计算 e^2,返回 7.389056098930649

3.10 log() - 计算自然对数
RETURN log(2.718) AS result
  • 计算 2.718 的自然对数,接近 1.0

3.11 log10() - 计算以 10 为底的对数
RETURN log10(100) AS result
  • 返回 100 的以 10 为底的对数 2.0

3.12 pi() - 返回圆周率 π
RETURN pi() AS result
  • 返回 3.141592653589793

3.13 cos()sin()tan() - 三角函数
RETURN cos(pi()/3) AS result
  • 计算 π/3 的余弦值,结果为 0.5
RETURN sin(pi()/2) AS result
  • 计算 π/2 的正弦值,结果为 1.0
RETURN tan(pi()/4) AS result
  • 计算 π/4 的正切值,结果为 1.0

3.14 acos()asin()atan() - 反三角函数
RETURN acos(0.5) AS result
  • 计算 0.5 的反余弦值,结果为 1.047
RETURN asin(1) AS result
  • 计算 1 的反正弦值,结果为 1.5708
RETURN atan(1) AS result
  • 计算 1 的反正切值,结果为 0.785

3.15 atan2() - 计算 y/x 的反正切
RETURN atan2(1, 1) AS result
  • 返回 1/1 的反正切值,结果为 0.785π/4)。

3.16 haversin() - 计算半正矢(Haversine)距离
RETURN haversin(1) AS result
  • 计算 1 的半正矢,结果为 0.2298

四、数学函数结合 MATCHWITH 的高级用法


4.1 计算订单的折扣金额
MATCH (o:Order)
RETURN o.id, round(o.totalAmount * 0.1) AS discountAmount
  • 计算 Order 的折扣金额,并进行四舍五入。

4.2 计算点与原点的距离
MATCH (p:Point)
RETURN p.id,

 sqrt(p.x * p.x + p.y * p.y) AS distance
  • 计算 Point 节点的欧几里得距离。

4.3 生成随机幸运数
MATCH (n:Person)
RETURN n.name, ceil(rand() * 100) AS luckyNumber
  • 为每个 Person 生成一个 1-100 之间的随机幸运数。

4.4 通过 atan2() 计算角度
MATCH (p:Point)
RETURN p.id, atan2(p.y, p.x) AS angle
  • 计算点 (x, y) 的角度(弧度)。

4.5 使用 haversin() 计算地理距离
WITH 6371 AS earthRadius, 0.5 AS delta
RETURN 2 * earthRadius * haversin(delta) AS distance
  • 使用 haversin() 计算大圆距离。

五、数学函数的注意事项


5.1 sqrt()log() 等函数不支持负数
RETURN sqrt(-9)
  • 错误:sqrt() 不支持负数输入,应确保数据非负。

5.2 acos()asin() 的输入必须在 -11 之间
RETURN acos(2)
  • 错误:acos()asin() 只能接受 -11 之间的数值。

5.3 log() 的参数必须为正数
RETURN log(-5)
  • 错误:log() 只接受正数作为参数。

5.4 rand() 生成的随机数是浮点型
RETURN rand()
  • 生成 01 之间的浮点数,如果需要整数,需要进行 ceil()floor() 处理。

六、WITH 结合数学函数的高级用法


6.1 结合 WITH 进行中间计算
MATCH (n:Product)
WITH n, round(n.price * 1.1) AS newPrice
RETURN n.name, newPrice
  • 计算 Product 价格的 10% 增长,并进行四舍五入。

6.2 生成 1-100 的随机整数
WITH ceil(rand() * 100) AS randomInt
RETURN randomInt
  • 生成 1100 之间的随机整数。

6.3 计算路径上的距离
MATCH (a:Location)-[r:CONNECTED_TO]->(b:Location)
WITH r.distance AS d
RETURN a.name, b.name, sqrt(d * d) AS distance
  • 计算路径的距离。

6.4 使用 WITH 计算复合公式
WITH 5 AS x
RETURN x * x + 2 * x + 1 AS formulaResult
  • 计算复合公式 x^2 + 2x + 1 的结果。

七、总结

  • Cypher 提供了丰富的数学函数,包括基础算术函数、对数函数、三角函数和随机数生成。
  • 这些函数可与 MATCHWITHRETURN 语句结合使用,用于计算、数据处理和路径分析。
  • 使用 abs()sqrt()ceil()floor()round() 等函数,可以对数值进行基本的转换和处理。
  • 三角函数如 cos()sin()tan() 适用于角度计算,而 haversin() 则常用于地理距离计算。

熟练掌握这些数学函数,可以大大提升 Neo4j 图数据库中数据分析和计算的能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值