在 Bigquery 中的 sum() 之后将科学记数法转换为浮点数

Posted

技术标签:

【中文标题】在 Bigquery 中的 sum() 之后将科学记数法转换为浮点数【英文标题】:Convert scientific notation to float after sum() in Bigquery 【发布时间】:2019-03-12 17:30:19 【问题描述】:

我将收入浮动值作为字符串。在执行一个简单的查询后:

SELECT
    EXTRACT(date FROM time) date,
    SUM(CAST(revenue AS FLOAT64)) number
FROM
    `mytable`
GROUP BY date
ORDER BY date DESC

我知道了:

2019-03-11    3.2172407478999996E8
2019-03-10    2.3065347E7

等等。

问题是 - 如何将这些值转换为浮点数?我知道堆栈上已经发布了相同类型的问题,但没有一个能够让我找到正确的解决方案。

【问题讨论】:

【参考方案1】:

该值已经是一个浮点数,只是FORMAT它:

SELECT FORMAT('%.2f', 3.2172407478999996E8)
-- 321724074.79

PS:如果收入是某种货币/财务计算,则不要转换为浮动;改用十进制数据类型。

【讨论】:

【参考方案2】:

我想如果你转换成一个字符串,你会得到值:

CAST(SUM(revenue) AS string) as number

numeric:

CAST(SUM(revenue) AS numeric) as number

【讨论】:

是的,好像一直都在表面上【参考方案3】:

INTEGER 铸造怎么样

SELECT
    EXTRACT(date FROM time) date,
    SUM(CAST(revenue AS INTEGER)) number
FROM
    `mytable`
GROUP BY date
ORDER BY date DESC

【讨论】:

以上是关于在 Bigquery 中的 sum() 之后将科学记数法转换为浮点数的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 中的 SUM 循环

Google BigQuery - 根据另一列中的值减去一列的 SUM

Google BigQuery:即使在 SUM 别名更改时,SUM 也会返回不同的结果

Bigquery/标准 SQL:如何使用 sum() 聚合所有列(大约 100 列)?

Google BigQuery Sum 返回错误的结果

BigQuery/SQL - 特定变体的拆分值