Sql 如何在BigQuery中对不同的值进行排序?
我有一个查询,我正试图把它放在Google BigQuery中,这将使每个客户的销售额减少十分之一。我遇到的问题是,如果一个十分位数在许多客户具有相同销售价值的时候中断,那么尽管他们的销售额相同,但他们最终可能会以不同的十分位数结束 例如,如果总共有20位客户,其中一位客户花费了100美元,18位客户花费了50美元,另一位客户花费了25美元,那么由于创建了相同的组,花费了50美元的18位客户仍然会被划分到所有的十分位中,而实际上我希望他们被放在同一个十分位中 我使用的数据显然有点复杂——大约有1000万客户,销售额在每个客户所属的特定群体中决定 示例代码:Sql 如何在BigQuery中对不同的值进行排序?,sql,google-bigquery,Sql,Google Bigquery,我有一个查询,我正试图把它放在Google BigQuery中,这将使每个客户的销售额减少十分之一。我遇到的问题是,如果一个十分位数在许多客户具有相同销售价值的时候中断,那么尽管他们的销售额相同,但他们最终可能会以不同的十分位数结束 例如,如果总共有20位客户,其中一位客户花费了100美元,18位客户花费了50美元,另一位客户花费了25美元,那么由于创建了相同的组,花费了50美元的18位客户仍然会被划分到所有的十分位中,而实际上我希望他们被放在同一个十分位中 我使用的数据显然有点复杂——大约有1
NTILE(10) OVER (PARTITION BY customer_group ORDER BY yearly_sales asc) as current_sales_decile
NTILE函数可以工作,但我遇到了上面描述的问题,还没有找到解决方法。欢迎您提出任何建议。请自己计算积分:
select ceiling(rank() over (partition by customer_group order by yearly_sales) * 10.0 /
count(*) over (partition by customer_group)
)
这使您可以更好地控制瓷砖的形成方式。特别是,具有相同值的所有行都位于同一平铺中