如何在BigQuery上使用SQL计算两个数字之间的百分比?

时间:2018-10-24 11:26:31

标签: sql google-bigquery

由于没有内置的SQL函数可以计算两个数字之间的百分比差异,因此我想在自己的查询中编写计算结果。

计算公式为:

enter image description here

如列出的here

这是我的查询

     select 
    ( ( cast ( 30.245358139534886 - 25.92631649122807  ) as FLOAT64 )
     /
   ( (cast ( 30.245358139534886 + 25.92631649122807  ) as FLOAT64) / 2.0)  ) * 100

但是这不起作用,它给出了:

  

语法错误:[3:52]处出现意外的“)”

*需要铸造,因为并非总是数字会浮动。

此查询的结果应为:15.378 The calculation can be seen here

我的查询出了什么问题?

4 个答案:

答案 0 :(得分:2)

您的表达式在BigQuery中如下所示:

select 100 * abs( 30.245358139534886 - 25.92631649122807  ) /
       ( (30.245358139534886 + 25.92631649122807) / 2)

答案 1 :(得分:1)

回答您的特定问题,为什么它会失败..您缺少括号并使用了错误的强制类型转换。

   select 
     cast ((30.245358139534886 - 25.92631649122807) as FLOAT64 )
     /
   ( (cast ( (30.245358139534886 + 25.92631649122807  ) as FLOAT64) / 2.0)  ) * 100

如何使用演员表

cast (value as datatype)

答案 2 :(得分:0)

尝试:

select 
( ABS( cast ( 30.245358139534886 - 25.92631649122807  as FLOAT) )
 / ( (cast ( 30.245358139534886 + 25.92631649122807  as FLOAT) ) / 2.0)  ) * 100 FROM DUAL;

答案 3 :(得分:0)

Percent DifferencePercent Change都在大型查询社区工具中定义。看看下面的例子!

差异百分比示例:

SELECT bqutil.fn.percentage_difference(1, 0.1)

返回

1.6364

百分比变化示例:

SELECT bqutil.fn.percentage_change(1, 0.1)

返回

0.9