hive sql 窗口函数

hive sql 窗口函数

1) 窗口函数 Lag, Lead, First_value,Last_value

Lag, Lead、这两个函数为常用的窗口函数,可以返回上下数据行的数据.

LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值

LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值, 与LAG相反

— 组内排序后,向后或向前偏移
— 如果省略掉第三个参数,默认为NULL,否则补上。

select
    dp_id,
    mt,
    payment,
    LAG(mt,2) over(partition by dp_id order by mt) mt_new
from test2;

结果如图:

<span>hive sql 窗口函数</span>

— 组内排序后,向后或向前偏移
— 如果省略掉第三个参数,默认为NULL,否则补上。

select
   dp_id,
   mt,
   payment,
   LEAD(mt,2,'1111-11') over(partition by dp_id order by mt) mt_new
from test2;

结果如图:

<span>hive sql 窗口函数</span>

FIRST_VALUE, LAST_VALUE

first_value:  取分组内排序后,截止到当前行,第一个值

last_value:  取分组内排序后,截止到当前行,最后一个值

— FIRST_VALUE      获得组内当前行往前的首个值
— LAST_VALUE       获得组内当前行往前的最后一个值
— FIRST_VALUE(DESC) 获得组内全局的最后一个值

select
   dp_id,
   mt,
   payment,
   FIRST_VALUE(payment) over(partition by dp_id order by mt) payment_g_first,
   LAST_VALUE(payment) over(partition by dp_id order by mt) payment_g_last,
  FIRST_VALUE(payment) over(partition by dp_id order by mt desc) payment_g_last_global
from test2
ORDER BY dp_id,mt;

<span>hive sql 窗口函数</span>

2)排名函数 Rank,Dense_Rank, Row_Number

R()  over  (partion  by  col1…  order  by  col2…  desc/asc)

select
   class1,
   score,
   rank() over(partition by class1 order by score desc) rk1,
   dense_rank() over(partition by class1 order by score desc) rk2,
   row_number() over(partition by class1 order by score desc) rk3
from zyy_test1;

<span>hive sql 窗口函数</span>

如上图所示,rank  会对相同数值,输出相同的序号,而且下一个序号不间断;

       dense_rank  会对相同数值,输出相同的序号,但下一个序号,间断

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119643.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [Android] Bitmap内存在各系统版本的演化

    聚焦的问题1、Bitmap的像素数据是存在哪里的?2、Bitmap内存如何释放?需要调用recycle吗?Bitmap bitmap = Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);以这样声明一个bitmap为例,有三个位置需要关注,bitmap引用本身所在的位置(栈),引用指向的对象所在的位置(堆),对象中持有的像素数据所在的…

    2022年3月11日
    36
  • shell日期循环[通俗易懂]

    shell日期循环[通俗易懂]1. vitest.sh2.#!/bin/shstartdate=`date-d”$1″+%Y-%m-%d`enddate=`date-d”$2″+%Y-%m-%d`while[[$startdate<$enddate]]doecho"########$startdate#########"startdate=`dat

    2022年7月24日
    6
  • win7任务管理器快捷键是什么

    win7任务管理器快捷键是什么根据小编的观察与发现,发现有些小伙伴不是因为不使用快捷键,而是不知道任务管理器的快捷键。所以为了帮助这些小伙伴,小编今天就来告诉你们打开任务管理器的快捷键是什么。我们的电脑其实在打开一些应用的时候,是有快捷键的。但是往往都是因为我们不知道快捷键是什么,所以才会没有用。所以今天小编就来告诉你们打开任务管理器的快捷键是什么。方法一:任务管理器打开的快捷键:ctrl+alt…

    2022年6月18日
    38
  • java中位运算和移位运算详解[通俗易懂]

    java中位运算和移位运算详解[通俗易懂] 一、位运算(1)按位与&如果两个相应的二进制形式的对应的位数都为1,则结果为1,记为同1为1,否则为0。首先我们看一下对正数的运算  &nbs

    2022年7月4日
    23
  • java中的next()方法,nextline()方法,hasnext()方法的用法系列(1)。

    java中的next()方法,nextline()方法,hasnext()方法的用法系列(1)。这是王秀秀的第23篇博客????看下方目录next()方法nextline()方法hasnext()方法最近本菜鸡做题呀,遇到了一些很好玩的事情,那就是scanner类中的一些方法,经过了解后,真挺好玩的。next()方法话不多说上代码importjava.util.Scanner;publicclassnext_and_nextline{ publicstaticvoid…

    2022年5月25日
    45
  • 用c语言编写贪吃蛇要会什么_c语言贪吃蛇原理

    用c语言编写贪吃蛇要会什么_c语言贪吃蛇原理贪吃蛇(单人版):实现过程:本人先来介绍一个函数——bioskey函数:intbioskey(intcmd)参数(cmd)基本功能0返回下一个从键盘键入的值(若不键入任何值,则将等下一个键入)它返回一个16位的二进制数,包括两个不同的值:1.当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;2.对于特殊键(如方向键、F1~F12等等),低8位为0,高8…

    2025年9月12日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号