SQL:跨列查找分位数
这里有一个简单的。我的销售表如下所示:SQL:跨列查找分位数,sql,hive,Sql,Hive,这里有一个简单的。我的销售表如下所示: store_id industry_code sales_person_1 sales_person_2 ... sales_person_n 1 1000 20.75 15.50 ... 100 2 2000 15.54 16.84 ...
store_id industry_code sales_person_1 sales_person_2 ... sales_person_n
1 1000 20.75 15.50 ... 100
2 2000 15.54 16.84 ... 125
假设我想找出
store\u id=1
的销售人员2属于哪个分位数。我知道我可以使用一个窗口函数ntile(5)OVER(partitionbyorderbysum(\uuuu)DESC)
将一列划分为5个bucket,并使用它来识别任意值属于哪个bucket。跨列而不是在列中执行此操作的最佳方法是什么?您可以做的是将列分解为几行:
select t.store_id,
t.industry_code,
s.val
from test_table t
lateral view explode(array(sales_person_1, sales_person_2, ..., sales_person_n)) s as val
然后才使用ntile
查看蜂巢文档。没有好办法。最好的方法是将带有值的数据存储在单独的行中,而不是列中。