【问题标题】:calculate percentage from BigQuery table Standard SQL从 BigQuery 表标准 SQL 计算百分比
【发布时间】:2018-08-28 13:43:36
【问题描述】:
| eta   | arrived    | 
+-------+------------+
| 06:47 |    07:00   | 
| 08:30 |    08:20   | 
| 10:30 |    10:38   | 
+-------+------------+

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

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    一种方法是:

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

    如果您确实想要 0 到 100 之间的数字,可以使用 100.0。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        我想...说“三分之二的准时”

        又一个“选项”

        #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     
        

        【讨论】:

          猜你喜欢
          • 2023-02-01
          • 2020-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-02
          • 1970-01-01
          • 2021-12-17
          • 2015-06-11
          相关资源
          最近更新 更多