рассчитать процент от таблицы BigQuery Standard SQL - PullRequest
0 голосов
/ 28 августа 2018
| eta   | arrived    | 
+-------+------------+
| 06:47 |    07:00   | 
| 08:30 |    08:20   | 
| 10:30 |    10:38   | 
+-------+------------+

если у вас есть таблица, подобная приведенной выше, и я хочу вычислить, сколько прибывших находится в пределах ETA, например, первое и третье находятся в пределах времени ETA, а второе - нет, поэтому я хотел бы рассчитать процент или сказать, из 3, 2 были вовремя. Как мне сделать это в Bigquery Standard SQL?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Один из способов сделать это:

select avg(case when arrived < eta then 1.0 else 0 end) as ratio_on_time
from t;

Вы можете использовать 100.0, если вы действительно хотите число от 0 до 100.

0 голосов
/ 28 августа 2018

я бы хотел ... сказать "из 3, 2 вовремя"

Еще один "вариант"

#standardSQL
SELECT FORMAT('Out of %i, %i were on time', COUNT(1), COUNTIF(arrived < eta)) summary
FROM `project.dataset.table`  

если применить к фиктивным данным в вашем вопросе - результат:

Row summary  
1   Out of 3, 1 were on time     
0 голосов
/ 28 августа 2018

Подсчитайте количество строк, соответствующих условию, затем разделите на общее количество:

SELECT
  100 * COUNTIF(arrived < eta) / COUNT(*) AS percent_on_time
FROM dataset.table

Я отменил условие, так как я понимаю, что вы хотели бы проверить, чтобы время прибытия было меньше, чем ETA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...