如何在bigquery中对不同的值进行索引?

ncgqoxb0  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(292)

我有一个查询,我正试图把它放在googlebigquery中,它将使每个客户的销售额减少十分之一。我遇到的问题是,如果一个十分位数在许多客户具有相同销售价值的点处中断,那么尽管他们具有相同的销售价值,他们最终可能会以不同的十分位数结束。
例如,如果总共有20个客户,其中一个客户花了100美元,18个客户花了50美元,还有一个客户花了25美元,那么由于创建了相等的组,花费50美元的18个客户仍然会被划分到所有的十分位,而实际上我希望他们被放在同一个十分位。
我使用的数据显然要复杂一点——大约有1000万客户,销售额是在每个客户所属的特定群体中决定的。
示例代码:

NTILE(10) OVER (PARTITION BY customer_group ORDER BY yearly_sales asc)  as current_sales_decile

ntile函数可以工作,但是我遇到了上面描述的问题,还没有找到解决方法。欢迎提出任何建议。

tuwxkamq

tuwxkamq1#

你自己算算总数:

select ceiling(rank() over (partition by customer_group order by yearly_sales) * 10.0 /
               count(*) over (partition by customer_group)
              )

这样可以更好地控制瓷砖的形成方式。特别是,具有相同值的所有行都位于同一个磁贴中。

相关问题