由于没有内置的SQL函数可以计算两个数字之间的百分比差异,因此我想在自己的查询中编写计算结果。
计算公式为:
如列出的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
我的查询出了什么问题?
答案 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 Difference和Percent Change都在大型查询社区工具中定义。看看下面的例子!
差异百分比示例:
SELECT bqutil.fn.percentage_difference(1, 0.1)
返回
1.6364
百分比变化示例:
SELECT bqutil.fn.percentage_change(1, 0.1)
返回
0.9