如何在BigQuery中实现向0.5倍数的向上取整?
在BigQuery中实现向上取整到较大的0.5倍数
你需要的是向上取整到不小于输入值的最小0.5倍数,而非四舍五入到最近的0.5倍数——你之前用的round()函数是四舍五入逻辑,所以才会得到不符合预期的结果。
解决方案
使用BigQuery的CEIL()函数(向上取整函数),公式如下:
CEIL(input_value * 2) / 2
验证案例
对应你的输入输出逐一验证:
- 输入
0.01:CEIL(0.01 * 2) / 2 = CEIL(0.02) / 2 = 1 / 2 = 0.5,符合预期 - 输入
2.3913:CEIL(2.3913 * 2) / 2 = CEIL(4.7826) / 2 = 5 / 2 = 2.5,符合预期 - 输入
2.11:CEIL(2.11 * 2) / 2 = CEIL(4.22) / 2 = 5 / 2 = 2.5,符合预期
关于输入4.6667的说明
你表格中输入4.6667期望输出4.5的情况,和你描述的“取较大的0.5倍数”逻辑矛盾——因为4.5比4.6667小,不属于“较大的倍数”,按照需求应该输出5.0。如果确实需要得到4.5,那需求是向下取整到0.5倍数,此时用FLOOR(input_value * 2) / 2,但这和你要求的“2.11应返回2.5而非2”冲突,推测是表格存在笔误。
内容的提问来源于stack exchange,提问作者bala




