Как рассчитать процент между двумя числами, используя SQL на BigQuery? - PullRequest
0 голосов
/ 24 октября 2018

Поскольку нет встроенной функции SQL, которая может вычислять процентное расхождение между двумя числами, я хочу написать вычисление в своем собственном запросе.

Вычисление:

enter image description here

Как указано здесь

Это мой запрос:

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

Однако это не работает, оно дает:

Синтаксическая ошибка: неожиданно ")" в [3:52]

* Приведение необходимо, поскольку не всегда числа будут с плавающей точкой.

результат этого запроса должен быть: 15.378 Расчет можно посмотреть здесь

Что не так с моим запросом?

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Попробуйте:

select 
( ABS( cast ( 30.245358139534886 - 25.92631649122807  as FLOAT) )
 / ( (cast ( 30.245358139534886 + 25.92631649122807  as FLOAT) ) / 2.0)  ) * 100 FROM DUAL;
0 голосов
/ 24 октября 2018

Отвечая на ваш конкретный вопрос, почему он терпит неудачу .. вы пропускаете скобки и неправильно используете приведение.

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

Как использовать приведение

cast (value as datatype)
0 голосов
/ 24 октября 2018

Ваше выражение будет выглядеть в BigQuery следующим образом:

select 100 * abs( 30.245358139534886 - 25.92631649122807  ) /
       ( (30.245358139534886 + 25.92631649122807) / 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...