从BigQuery表标准SQL计算百分比

从BigQuery表标准SQL计算百分比,sql,google-bigquery,Sql,Google Bigquery,如果有一个像上面这样的表格,我想计算有多少到达时间在预计到达时间内,例如,第一个和第三个在预计到达时间内,但第二个不在,所以我想计算百分比,或者说3个中有2个是准时的。在Bigquery标准SQL中如何执行此操作?计算与条件匹配的行数,然后除以总计数: | eta | arrived | +-------+------------+ | 06:47 | 07:00 | | 08:30 | 08:20 | | 10:30 | 10:38 | +---

如果有一个像上面这样的表格,我想计算有多少到达时间在预计到达时间内,例如,第一个和第三个在预计到达时间内,但第二个不在,所以我想计算百分比,或者说3个中有2个是准时的。在Bigquery标准SQL中如何执行此操作?

计算与条件匹配的行数,然后除以总计数:

| eta   | arrived    | 
+-------+------------+
| 06:47 |    07:00   | 
| 08:30 |    08:20   | 
| 10:30 |    10:38   | 
+-------+------------+
选择
100*计数(到达时间<预计到达时间)/计数(*)为准时百分比
从dataset.table

我颠倒了条件,因为我的理解是,您需要检查到达时间是否小于ETA。

计算符合条件的行数,然后除以总计数:

| eta   | arrived    | 
+-------+------------+
| 06:47 |    07:00   | 
| 08:30 |    08:20   | 
| 10:30 |    10:38   | 
+-------+------------+
选择
100*计数(到达时间<预计到达时间)/计数(*)为准时百分比
从dataset.table
我改变了条件,因为我的理解是,您需要检查到达时间是否小于预计到达时间。

一种方法是:

SELECT
  100 * COUNTIF(arrived < eta) / COUNT(*) AS percent_on_time
FROM dataset.table
选择平均值(到达时的情况
如果您确实想要从0到100的数字,可以使用
100.0

一种方法是:

SELECT
  100 * COUNTIF(arrived < eta) / COUNT(*) AS percent_on_time
FROM dataset.table
选择平均值(到达时的情况
如果您实际需要0到100之间的数字,可以使用
100.0

我想。。。说“3人中有2人准时”

另一个“选择”

我想。。。说“3人中有2人准时”

另一个“选择”

Row summary  
1   Out of 3, 1 were on time