ntile mysql 支持吗
发布网友
发布时间:2022-05-03 05:00
我来回答
共1个回答
热心网友
时间:2022-04-13 02:04
ntile mysql 支持
继续介绍几个序列函数:
NTILE,ROW_NUMBER,RANK和DENSE_RANK
环境信息:
Hive版本为apache-hive-0.14.0-bin
Hadoop版本为hadoop-2.6.0
Tez版本为tez-0.7.0
数据:
P088888888888,2016-02-10,1
P088888888888,2016-02-11,3
P088888888888,2016-02-12,1
P088888888888,2016-02-13,9
P088888888888,2016-02-14,3
P088888888888,2016-02-15,12
P088888888888,2016-02-16,3
P066666666666,2016-02-10,6
P066666666666,2016-02-11,2
P066666666666,2016-02-12,1
P066666666666,2016-02-13,9
P066666666666,2016-02-14,2
P066666666666,2016-02-15,20
P066666666666,2016-02-16,2
导入数据到Hive表中:
load data localinpath '/home/hadoop/testhivedata/windows_func.txt' overwrite into tablewindows_func;
NTILE
NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值
NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY polno ORDER BY createtime ROWSBETWEEN 3 PRECEDING AND CURRENT ROW)如果切片不均匀,默认增加第一个切片的分布。
SELECT
polno,
createtime,
pnum,
NTILE(2) OVER(PARTITION BY polno ORDER BY createtime) AS rn1, --分组内将数据分成2片
NTILE(3) OVER(PARTITION BY polno ORDER BY createtime) AS rn2, --分组内将数据分成3片
NTILE(4) OVER(ORDER BY createtime) AS rn3 --将所有数据分成4片
FROM windows_func ORDER BY polno,createtime;