postgresql/hive中函数学习
发布时间:2020-12-13 17:14:50 所属栏目:百科 来源:网络整理
导读:目前postgresql中的部分函数在hive中也是存在的,所以今天就以postgresql为例来进行说明,这个过程同时可以应用到hive中。 1、创建表 CREATETABLEemployee(empidINT,deptidINT,salaryDECIMAL(10,2)); 2、导入数据 INSERTINTOemployeeVALUES(1,10,5500.00);IN
目前postgresql中的部分函数在hive中也是存在的,所以今天就以postgresql为例来进行说明,这个过程同时可以应用到hive中。 1、创建表 CREATETABLEemployee( empidINT,deptidINT,salaryDECIMAL(10,2) ); 2、导入数据 INSERTINTOemployeeVALUES(1,10,5500.00); INSERTINTOemployeeVALUES(2,4500.00); INSERTINTOemployeeVALUES(3,20,1900.00); INSERTINTOemployeeVALUES(4,4800.00); INSERTINTOemployeeVALUES(6,40,14500.00); INSERTINTOemployeeVALUES(7,44500.00); INSERTINTOemployeeVALUES(10,44500.00); INSERTINTOemployeeVALUES(11,44501.00); INSERTINTOemployeeVALUES(8,50,6500.00); INSERTINTOemployeeVALUES(9,7500.00); 3、应用 --每个部门工资最高的 select*from( selecte.*,row_number()over(partitionbye.deptidorderbye.salarydesc)rankfromemployeee )ee whereee.rank=1; --应该用rank,对于工资相同的应该都显示出来 select*from( selecte.*,rank()over(partitionbye.deptidorderbye.salarydesc)rankfromemployeee )ee whereee.rank=1; --rank和dense_rank的区别就是前者占位,后者不占位 --ntile可以看作是把有序的数据集合平均分配到expr指定的数量的桶中,将桶号分配给每一行。 --如果不能平均分配,则较小桶号的桶分配额外的行,并且各个桶中能放的行数最多相差1。 select e.*,ntile(3)over(partitionbye.deptidorderbye.salarydesc)ntile,rank()over(partitionbye.deptidorderbye.salarydesc)rank,dense_rank()over(partitionbye.deptidorderbye.salarydesc)drank,row_number()over(partitionbye.deptidorderbye.salarydesc)rownum,first_value(salary)over(partitionbye.deptidorderbye.salarydesc)fv,last_value(salary)over(partitionbye.deptidorderbye.salaryasc)lvfromemployeee 好了,就这些了,通过例子能很清楚的看到各个函数的应用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c – std :: stack元素销毁顺序
- AJAX overrideMimeType作用
- JSON.stringify(),JSON.parse(),toJSON()方法使用
- reactor模式与java nio
- ruby-on-rails – rails 3将html标签打印到屏幕而不是渲染它
- ruby-on-rails – 使用rails paperclip插件将图像存储在数据
- ruby-on-rails – OmniAuth – Facebook登录不在user_info中
- mogodb 的自定义函数定义及引用
- C#和SQL Server – 使用存储过程“一次性”删除多行的最佳方
- 正则表达式匹配可选的“”符号,后跟任意数字的数字