- 博客(8)
- 收藏
- 关注
原创 数据求前或后百分比问题(分桶思想)
语法是:ntile (num) over ([partition_clause] order_by_clause) as your_bucket_num。本题要求的是支付金额前20%的用户,通过上述ntile函数分析 可知需要分5个桶,是对数据用户支付的总金额进行标签,然后求出对应的用户。ntile()函数主要用于对数据进行分片、分桶,其算法为如果数据能均匀分配的话就按照平均分配,不能均匀分配的话,优先将数据分配到编号较小的桶中。然后可以根据桶号,选取前或后 n分之几的数据。
2024-03-08 14:20:31
1079
1
原创 标记分桶重排序问题一
总结:关键点在于额外添加一个分桶列,然后通过sum(分桶列)over(partition by uid order by rnk),将桶号相同的分到一个组。--步骤1:当前行的日期减去上一行的日期,如果大于30天记录为一个事件用1表示,否则为0。(1)采用0和1进行事件标记,0表示未发生的事件,1表示事件发生。(1)当前行的日期减去上一行的日期,如果大于30天,记录为一个事件用1表示,否则为0。(3)结合(1)和(2)就能将变化前和变化后数据进行区分,就是数据分桶映射的过程。--步骤4:组内重新排序。
2024-03-07 17:45:36
1171
1
原创 小打卡圈主与用户映射关系问题
已知,数据如下:圈子可以理解为微信公众号,用户可以理解为公众号的粉丝 tb_habit圈子表:近千万行数据master_id(圈住的用户id) habit_id(圈住所建的圈子)user_habit_relation用户与圈子关系表:亿行数据habit_id(所建的圈子) user_id(加入圈子的用户)
2024-03-07 17:28:09
1188
1
原创 hql窗口函数之rows与range的区别
range后面跟计算表达式,对order by后面的某个字段值进行计算,计算后的结果表示其真正的范围。,有6,6,6,7,8,所以range_sum=6+6+6+7+8=33。,有1,1,3,所以range_sum=1+1+3=5。,有1,1,3,所以range_sum=1+1+3=5。:id =1,sum的范围为:所有处于[0,3]的值,:id=1,sum的范围为:所有处于[0,3]的值,:id=3,sum的范围为:所有处于[2,5]的值,:id=6,sum的范围为:所有处于[5,8]的值,
2024-03-07 15:35:52
583
1
原创 插入排序程序
package com.cos.lession09.demo1; import java.util.Arrays; public class Demo1 { public static void main(String[] args) { int[] a = { 65, 54, 87, 23, 42, 77, 55, 15, 88, 99 ,6}; /* * 插入排序,他逻辑上把数组的第一个值划分为有序区域,右边的值为无序区域 ...
2021-12-16 18:01:47
585
原创 冒泡排序程序
package com.cos.lession08.demo4; import java.util.Arrays; /** * 冒泡排序 * * @author cos * */ public class MaoPaoDemo { public static void main(String[] args) { int[] a = { 65, 54, 87, 23, 42, 77, 55, 15, 88, 99 }; System.out.printl...
2021-12-16 17:55:51
673
原创 选择排序程序
package com.cos.lession08.demo4; import java.util.Arrays; /** * 选择排序 * @author cos * */ public class XuanZeDemo { public static void main(String[] args) { int[] a = { 65, 54, 87, 23, 42, 77, 55, 15, 88, 99 }; //比较的轮数是数组长度-1 ...
2021-12-16 17:54:40
508
原创 修改名字小程序
package com.cos.lession08.demo3; import java.util.Arrays; import java.util.Scanner; public class SimpleNameSystem { public static void main(String[] args) { Scanner input = new Scanner(System.in); String[] names = { "张三", "李四", "王五",...
2021-12-16 17:53:13
170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人