如何在Spark SQL中四舍五入值

时间:2019-06-07 08:30:16

标签: java floating-point apache-spark-sql double

我正在使用以下查询查询postgres sql。我需要 向下取整 min(months_between(current_date,somedate))

的值

例如:13.83应该是13而不是14,甚至13.9也应该是13。是否有任何函数可以舍入sparksql中的该值?任何帮助将不胜感激。

spark.sql(select id, min(months_between(current_date,somedate))  mnths \n" +
            "   from table1\n" +
            "      where B = "ball"\n" +
            "   group by\n" +
            "      id\n" +
            "   order by\n" +
            "      id 
)

2 个答案:

答案 0 :(得分:1)

请尝试使用 floor 函数,请参考以下链接: https://spark.apache.org/docs/2.3.0/api/sql/index.html#floor

答案 1 :(得分:1)

您可以使用floor()功能。它舍弃了它的论点。

请注意,floor(x)给出的最大整数≤x。因此floor(5.8)返回5,而floor(-5.8)返回-6。如果您的值可能为负,并且想要将其四舍五入,则必须测试其符号并使用floor()ceil()(四舍五入到较高的值)。

还请注意,使用int()将浮点数转换为int会将其舍入为零,无论其符号如何。不确定spark-sql中的实际行为,但它也可以解决您的问题。