![](/img/trans.png)
[英]Bigquery: Is there a way to round a timestamps UP or DOWN to the NEAREST minute?
[英]How to use bigquery round up results to 4 digits after decimal point?
BigQuery 現在沒有十進制數據類型。 所以我必須使用浮動
但
在 Bigquery 浮點除法中
0.029*50/100=0.014500000000000002
雖然
0.021*50/100=0.0105
向上舍入值
我必須使用round(floatvalue * 10000)/ 10000。
這是現在在 BigQuery 中處理十進制數據類型的正確方法嗎?
取決於您的編碼偏好 - 例如,您可以使用簡單的ROUND(floatvalue, 4)
取決於您究竟需要如何舍入 - 向上或向下 - 您可以分別調整表達式
例如ROUND(floatvalue + 0.00005, 4)
在下面的鏈接中查看 BigQuery Standard SQL 的所有舍入函數
請注意,這個問題現在應該有不同的答案。
問題的前提是“我們現在在 BigQuery 中沒有十進制數據類型。”
但現在我們這樣做:您可以使用NUMERIC
:
SELECT CAST('0.029' AS NUMERIC)*50/100
# 0.0145
只要讓你的列是NUMERIC
而不是FLOAT64
,你就會得到想要的結果。
在大多數 SQL 方言中四舍五入不是內置的 function,除非您有幸四舍五入到 Z157DB7ZDF530023575515D366C9B672E8。 在這種情況下, CEIL是一種快速可靠的解決方案。
在四舍五入的情況下,我們也可以利用 CEIL,盡管需要幾個額外的步驟。
步驟:
簡化這些步驟給我們留下了以下邏輯:
SELECT CEIL(value * 100) / 100 as rounded_up;
使用FLOOR function 可以使用相同的邏輯向下舍入:
FLOOR(value * 100) / 100 AS rounded_down;
感謝@Mureinik 的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.