postgresql/hive中函数学习

目前postgresql中的部分函数在hive中也是存在的,所以今天就以postgresql为例来进行说明,这个过程同时可以应用到hive中。

1、创建表

CREATE TABLE employee (
    empid INT,
    deptid INT,
    salary DECIMAL (10, 2)
);

2、导入数据

 INSERT INTO employee VALUES(1, 10, 5500.00);
 INSERT INTO employee VALUES(2, 10, 4500.00);
 INSERT INTO employee VALUES(3, 20, 1900.00);
 INSERT INTO employee VALUES(4, 20, 4800.00);
 INSERT INTO employee VALUES(6, 40, 14500.00); 
 INSERT INTO employee VALUES(7, 40, 44500.00);
 INSERT INTO employee VALUES(10, 40, 44500.00);
 INSERT INTO employee VALUES(11, 40, 44501.00);
 INSERT INTO employee VALUES(8, 50, 6500.00);
 INSERT INTO employee VALUES(9, 50, 7500.00);

3、应用

 --每个部门工资最高的
 select * from (
select e.*,row_number() over(partition by e.deptid order by e.salary desc) rank from employee e 
) ee
where ee.rank =1;

--应该用rank,对于工资相同的应该都显示出来
select * from (
select e.*,rank() over(partition by e.deptid order by e.salary desc) rank from employee e  
) ee
where ee.rank =1;

--rank和dense_rank的区别就是前者占位,后者不占位
--ntile可以看作是把有序的数据集合平均分配到expr指定的数量的桶中,将桶号分配给每一行。
--如果不能平均分配,则较小桶号的桶分配额外的行,并且各个桶中能放的行数最多相差1。
select 
  e.*,
  ntile(3) over(partition by e.deptid order by e.salary desc) ntile,
  rank() over(partition by e.deptid order by e.salary desc) rank,
  dense_rank() over(partition by e.deptid order by e.salary desc) drank,
  row_number() over(partition by e.deptid order by e.salary desc) rownum,
  first_value(salary) over(partition by e.deptid order by e.salary desc) fv,
  last_value(salary) over(partition by e.deptid order by e.salary asc) lv from employee e

好了,就这些了,通过例子能很清楚的看到各个函数的应用

时间: 2024-08-29 11:27:35

postgresql/hive中函数学习的相关文章

js中函数学习笔记

函数: 具名函数 匿名函数 一.函数定义 (1)函数声明 函数声明只能出现在程序或函数体内, function  fun(){ //函数体 } (2)函数表达式 匿名函数表达式 var fun = function(){ //函数体 } 具名函数表达式 var fun = function f(){ //函数体 } 具名函数表达式的函数名只能在创建函数内部使用 (3)函数构造函数 Var fun = new Function(),一般不建议使用 二.函数调用方式: (1)作为函数被调用,是由于函

Greenplum(PostgreSql)中函数内游标的使用实例

直接上代码,具体整体函数定义就不上了,只写关键部分: --定义两个变量 DECLARE CCUR REFCURSOR; -- 游标变量 RECORD1 RECORD; -- 记录变量,用来存储游标遍历的结果 BEGIN OPEN CCUR FOR EXECUTE 'select * from table1'; -- 打开并执行游标的查询 LOOP -- 遍历 FETCH CCUR INTO RECORD1; -- 获取游标的内容 IF FOUND THEN -- 判断有内容 --- 相关语句 E

Hive自定义函数的学习笔记(1)

前言: hive本身提供了丰富的函数集, 有普通函数(求平方sqrt), 聚合函数(求和sum), 以及表生成函数(explode, json_tuple)等等. 但不是所有的业务需求都能涉及和覆盖到, 因此hive提供了自定义函数的接口, 方便用户扩展. 自己好像很久没接触hadoop了, 也很久没博客了, 今天趁这个短期的项目, 对hive中涉及的自定义函数做个笔记. 准备: 编写hive自定义函数前, 需要了解下当前线上hive的版本. hive --vesion 比如作者使用到的hive

hive 中与mysql 中函数同名不同意的方法记录

max 函数 在hive中max函数是一个聚合函数,所以,而且返回值是double ,而且后面必须跟group by ,这个和mysql差异很大 Built-in Aggregate Functions (UDAF) DOUBLEmax(col)Returns the maximum value of the column in the group. mysql 中 Returns the maximum value of expr. MAX() may take a string argume

C++ Primer学习笔记(三) C++中函数是一种类型!!!

C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! 重要的事情要说三遍... 接 C++ Primer学习笔记(二) 类的构造函数 与类同名,且无返回类型. 同类的成员函数一样,也可以在类中声明,在类外定义. 格式: 类名(): 成员1(成员1初始化值), 成员2(成员2初始化值) { } 以上,冒号至大括号中间的部分,称为构造函数的初始化列表,用于调用类成员的构造函数来初始化. 没有在初始化列表中显式指定初始化的成员,将会

Java中的回调函数学习

Java中的回调函数学习 博客分类: J2SE JavaJ# 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在caller内提供实现A接口的public方法(将外部该接口的实现类通过形参传入caller的XXX): caller的某个方法dosth()中会用到XXX.callback()方法; 在caller的实例中,先实现A接口,后调用dosth()方法: 网上流行

contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>

说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ------------------------------------------------------------------------------------------------------------------------------------- 根据上一个笔记里面添加的printf()语句的打印信息提示,hello world 打印是在执行了 1 autostart_

大数据学习——关于hive中的各种join

准备数据 2,b 3,c 4,d 7,y 8,u 2,bb 3,cc 7,yy 9,pp 建表: create table a(id int,name string) row format delimited fields terminated by ','; create table b(id int,name string) row format delimited fields terminated by ','; 导入数据: load data local inpath '/root/h

云计算学习路线图素材、课件,mysql中函数的用法

在本篇文章中将给大家讲解下mysql中函数的用法: 今天在处理工单的时候,其中的一个需求是某商品的发货时效(即下单时间和发货时间的时间差),接触到了TIMESTAMPDIFF函数 TIMESTAMPDIFF TIMERSTAMPDIFF语法: TIMERSTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 该函数是返回datetime_expr1和datetime_expr2之间的整数差,其中单位有interval参数决定,interval的