如何获得绝对值/绝对和和窗口函数

时间:2016-04-26 16:29:46

标签: google-bigquery

我有一个数字列,我想找到每个值总和的百分比,但我想用绝对值来做。我想要运行的查询如下,但是我收到一条错误消息,说我不能同时使用聚合函数和非聚合字段。我也不想使用任何联接,所以我不确定这是否可行。也许我可以使用窗口功能,但我不熟悉它们。任何有关此查询或解释窗口函数的帮助将不胜感激。

select ABS(val) / SUM(ABS(val)) from table

2 个答案:

答案 0 :(得分:1)

完全同意Felipe上面的评论(显然,因为他是Google的大数据的Dev。倡导者。喜欢你在GCP播客上的插曲,Felipe!),但为了提供更多解释,我'我加两分钱。

当我第一次开始使用BigQuery时,我对窗口函数也非常困惑,但Felipe评论中最重要的小块是空$ nasm -f elf -o div.o div.asm $ gcc -m32 -o run main.c div.o 语句。这本质上提供了一个“打开窗口”功能,因此它不会对数据进行分区,对数据进行排序或提供窗口框架子句。这样,您就可以在整个列上执行OVER()

基本上,您的查询变得如此简单:

RATIO_TO_REPORT()

获取其在列中保留的绝对值和相对比率,而无需深入了解窗口函数的全部功能。

阅读有关窗口功能的Query Reference部分以了解更多信息。希望有所帮助!

答案 1 :(得分:0)

可能类似于:

SELECT ABS(x) abs_x, RATIO_TO_REPORT(abs_x) OVER() ratio
FROM (SELECT 3 x),(SELECT 4 x),(SELECT -2 x),(SELECT 1 x),(SELECT 7 x), (SELECT 1 x)