Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在BigQuery中对不同的值进行排序?_Sql_Google Bigquery - Fatal编程技术网

Sql 如何在BigQuery中对不同的值进行排序?

Sql 如何在BigQuery中对不同的值进行排序?,sql,google-bigquery,Sql,Google Bigquery,我有一个查询,我正试图把它放在Google BigQuery中,这将使每个客户的销售额减少十分之一。我遇到的问题是,如果一个十分位数在许多客户具有相同销售价值的时候中断,那么尽管他们的销售额相同,但他们最终可能会以不同的十分位数结束 例如,如果总共有20位客户,其中一位客户花费了100美元,18位客户花费了50美元,另一位客户花费了25美元,那么由于创建了相同的组,花费了50美元的18位客户仍然会被划分到所有的十分位中,而实际上我希望他们被放在同一个十分位中 我使用的数据显然有点复杂——大约有1

我有一个查询,我正试图把它放在Google BigQuery中,这将使每个客户的销售额减少十分之一。我遇到的问题是,如果一个十分位数在许多客户具有相同销售价值的时候中断,那么尽管他们的销售额相同,但他们最终可能会以不同的十分位数结束

例如,如果总共有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函数可以工作,但我遇到了上面描述的问题,还没有找到解决方法。欢迎您提出任何建议。

请自己计算积分:

select ceiling(rank() over (partition by customer_group order by yearly_sales) * 10.0 /
               count(*) over (partition by customer_group)
              )
这使您可以更好地控制瓷砖的形成方式。特别是,具有相同值的所有行都位于同一平铺中