1 -- 十分位,这个算法不是很准确 2 select 3 family_agreement_cnt -- 字段 4 ,dt -- 分区 5 ,rn -- 排序 6 ,cnt -- 总行数 7 ,percent2 -- 分位值 8 ,rk 9 ,row_num 10 from ( 11 select 12 t1.family_agreement_cnt -- 字段 13 ,t1.dt -- 分区 14 ,t1.rn -- 排序 15 ,t1.cnt -- 总行数 16 ,ceil(t1.rn / t1.cnt * 100) as percent2 -- 分位值 17 ,row_number() over(partition by ceil(t1.rn / t1.cnt * 100) order by rn desc) as rk 18 ,row_number() over(order by rn) as row_num 19 from ( 20 select 21 family_agreement_cnt 22 ,dt 23 ,row_number() over(partition by dt order by cast(family_agreement_cnt as double)) as rn 24 ,count(1) over(partition by dt) as cnt 25 from table_name 26 where dt='20180201' 27 ) t1 28 where t1.rn = 1 or t1.rn % cast(t1.cnt/10 as int) = 0 or t1.rn = t1.cnt 29 order by t1.dt,t1.rn 30 ) t2 31 where t2.rk = 1 32 ; 33 34 35 -- 方差 36 select 37 stddev(num) as std 38 from ( 39 select 1 as num union all 40 select 2 as num union all 41 select 3 as num union all 42 select 4 as num union all 43 select 5 as num union all 44 select 6 as num union all 45 select 7 as num union all 46 select 8 as num union all 47 select 9 as num union all 48 select 10 as num union all 49 select 11 as num union all 50 select 12 as num union all 51 select 13 as num union all 52 select 14 as num union all 53 select 15 as num union all 54 select 16 as num 55 ) t1 56 ;
1 -- 这个算法更准确 2 select 3 t3.cookieid 4 ,t3.createtime 5 ,t3.pv 6 ,t3.percent -- 分位值 7 ,t3.pt --分组内将数据分成N片 8 ,t3.rn 9 ,t3.cn 10 ,t3.rn2 11 from ( 12 select 13 t2.cookieid 14 ,t2.createtime 15 ,t2.pv 16 ,t2.pt --分组内将数据分成N片 17 ,t2.rn 18 ,t2.cn 19 ,row_number() over(partition by t2.pt order by t2.pv) as rn2 20 ,ceil(t2.rn / t2.cn * 100) as percent -- 分位值 21 from ( 22 select 23 t1.cookieid 24 ,t1.createtime 25 ,t1.pv 26 ,ntile(10) over(order by t1.pv) as pt --分组内将数据分成N片 27 ,row_number() over(order by t1.pv) as rn 28 ,count(1) over() as cn 29 from ( 30 select 'cookie1' as cookieid ,'2015-04-10' as createtime, 1 as pv union all 31 select 'cookie1' as cookieid ,'2015-04-11' as createtime, 2 as pv union all 32 select 'cookie1' as cookieid ,'2015-04-12' as createtime, 3 as pv union all 33 select 'cookie1' as cookieid ,'2015-04-13' as createtime, 4 as pv union all 34 select 'cookie1' as cookieid ,'2015-04-14' as createtime, 5 as pv union all 35 select 'cookie1' as cookieid ,'2015-04-15' as createtime, 6 as pv union all 36 select 'cookie1' as cookieid ,'2015-04-16' as createtime, 7 as pv union all 37 select 'cookie2' as cookieid ,'2015-04-10' as createtime, 8 as pv union all 38 select 'cookie2' as cookieid ,'2015-04-11' as createtime, 9 as pv union all 39 select 'cookie2' as cookieid ,'2015-04-12' as createtime, 10 as pv union all 40 select 'cookie2' as cookieid ,'2015-04-13' as createtime, 11 as pv union all 41 select 'cookie2' as cookieid ,'2015-04-14' as createtime, 12 as pv union all 42 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 13 as pv union all 43 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 14 as pv union all 44 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 15 as pv union all 45 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 16 as pv union all 46 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 17 as pv union all 47 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 18 as pv union all 48 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 19 as pv union all 49 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 20 as pv union all 50 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 21 as pv union all 51 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 22 as pv union all 52 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 23 as pv union all 53 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 24 as pv union all 54 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 25 as pv union all 55 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 26 as pv union all 56 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 27 as pv union all 57 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 28 as pv union all 58 select 'cookie2' as cookieid ,'2015-04-15' as createtime, 29 as pv union all 59 select 'cookie2' as cookieid ,'2015-04-16' as createtime, 30 as pv 60 ) t1 61 ) t2 62 ) t3 63 where t3.rn2 = 1 or t3.rn = t3.cn 64 order by t3.rn 65 ;