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