我正在使用以下查询查询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
)
答案 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中的实际行为,但它也可以解决您的问题。