【问题标题】:Google BigQuery: SUM returns different results even on SUM alias changesGoogle BigQuery:即使在 SUM 别名更改时,SUM 也会返回不同的结果
【发布时间】:2016-03-21 13:57:17
【问题描述】:

我有以下疑问:

SELECT 
      p_id,
      r_date,
      
      SUM(CASE WHEN p_type='h' AND post_p='c' THEN 1 ELSE 0 END) as test1
      
      FROM (
      
      SELECT 152234223 AS p_id,
      date AS r_date,
      sequence as p_type,
      
      LEAD(p_type, 1) OVER 
      (PARTITION BY u_id ORDER BY visit_id) AS post_p
      
      FROM   (Table_date_range([152234223.ses_],Timestamp('25022016'),Timestamp('29022016'))) 
 
      GROUP BY 1,2

此查询将返回 SUM 的结果,例如 145。 但是,如果我将 sum 的别名更改为“testing”或“test1234567890”,它将返回一个不同的值,高于或低于 145。

我想知道是否有人可以解释一下。需要解决方案!

非常感谢

【问题讨论】:

    标签: database google-bigquery alias


    【解决方案1】:

    如果您可以共享您的数据集,则验证这一点会更容易... 但只是通过阅读您的代码:

    您的问题似乎在这里:

    LEAD(p_type, 1) OVER 
          (PARTITION BY u_id ORDER BY u_id) AS post_p
    

    当您按相同属性进行分区和排序时,每个分区内的记录顺序可能会不一致。所以每次运行查询时, LEAD() 可能会返回不同的结果。

    别名更改的原因可能与缓存结果的返回有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-13
      • 2012-11-04
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 2022-08-10
      • 1970-01-01
      相关资源
      最近更新 更多