| eta | arrived |
+-------+------------+
| 06:47 | 07:00 |
| 08:30 | 08:20 |
| 10:30 | 10:38 |
+-------+------------+
如果有一个如上所述的表格,我想计算到达时间中有多少到达时间,例如,第一个和第三个到达时间在eta时间之内,但第二个不在eta时间之内,所以我想计算百分比,或者说3分之2准时。我将如何在Bigquery Standard SQL中做到这一点?
答案 0 :(得分:2)
一种方法是:
select avg(case when arrived < eta then 1.0 else 0 end) as ratio_on_time
from t;
如果您实际上想要0到100之间的数字,则可以使用100.0
。
答案 1 :(得分:1)
计算符合条件的行数,然后除以总数:
SELECT
100 * COUNTIF(arrived < eta) / COUNT(*) AS percent_on_time
FROM dataset.table
由于我的理解是您要检查到达时间是否比预计到达时间短,所以我扭转了条件。
答案 2 :(得分:1)
我想...说“三分之二的时间准时”
还有另一个“选项”
#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