database - 谷歌大查询 : SUM returns different results even on SUM alias changes

标签 database google-bigquery alias

我有以下查询:

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。 但是,如果我将总和的别名更改为“testing”或“test1234567890”,它将返回不同的值,高于或低于 145。

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

非常感谢

最佳答案

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

您的问题似乎出在这里:

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

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

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

关于database - 谷歌大查询 : SUM returns different results even on SUM alias changes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36132972/

相关文章:

javascript - 当用户仍在页面上时,Google Analytics 结果是否可以传递给 JavaScript 函数?

sql - 在标量子查询中创建别名 - SQLServer

python - Google BigQuery API,如何设置destinationTable的字段类型?

mysql - 如何在 SQL 中将列分组为单独的行

php - Laravel 别名找不到类

vba - 使用 VBA 在 Word 中创建另一个范围对象的副本

mysql - 计算每个元素在 "search"中出现的次数

MySQL 守护进程问题

php - 日期和时间默认输出到 mySQL 数据库中

java - 是否可以像 Java 类型一样命名数据库表?