分区列顺序是否会改变Netezza SQL的查询结果?
Netezza SQL中PARTITION BY列顺序对NTILE结果的影响
调整PARTITION BY子句里的列顺序不会导致查询结果发生变化。
原因很直接:PARTITION BY的核心是根据指定列的组合值对数据分组,列的顺序只是语法书写顺序,不会改变分组的实际逻辑。比如你原语句的PARTITION BY gender, country, favorite_color和调整后的PARTITION BY country, gender, favorite_color,都是把gender、country、favorite_color三个字段的唯一组合作为分组依据——只要这三个字段的值完全匹配,不管列的顺序怎么排,这些行都会被分到同一个组里。
而NTILE函数是在每个分组内,按照ORDER BY指定的income排序后进行分桶。既然分组的数据集完全一致,排序规则也没变化,最终的分桶结果自然不会有差异。
需要注意的是,如果改变的是ORDER BY子句的列顺序,才会影响NTILE的计算结果,但PARTITION BY的列顺序不产生影响。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

