• Hive的分析函数的使用


    原文:

    https://www.toutiao.com/i6769120000578945544/?group_id=6769120000578945544

    我们先准备数据库、表和数据

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    开窗分析函数相对于mysql中的聚合函数区别是:分析函数是基于某个组多个数据进行计算聚合,而聚合函数是每个组返回一行数据。

    官网

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    我们先做个例子感受下:

    要求: 查询部门编号为10的所有的员工,按照薪资降序排序

    Mysql实现:select empno,ename,deptno,sal from emp where deptno=10 order by sal desc;

    Hive的分析函数的使用

     

    如果要求是:将每个部门薪资最高的那个人的薪资显示在最后一行。

    select empno,ename,deptno,sal, max(sal) over(partition by deptno order by sal desc) as sal_max from emp;

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    我们看官网这个位置

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    我们来解释里面的概念

    当前有一个数据

    Hive的分析函数的使用

     

    CURRENT ROW

    Hive的分析函数的使用

     

    UNBOUNDED PRECEDING 初始行

    PRECEDING 前一行

    CURRENT ROW 当前行

    FOLLOWING 后一行

    UNBOUNDED FOLLOWING 最后一行

    Hive的分析函数的使用

     

    所以上面的语句我们变动下

    select empno,ename,deptno,sal, max(sal) over(partition by deptno order by sal desc ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as sal_max from emp;

    可以控制窗口大小

    Hive的分析函数的使用

     

    结果是一样的,但是窗口大小我们做了变化

    Hive的分析函数的使用

     

    我们准备数据

    Hive的分析函数的使用

     

    创建一个表

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    载入数据

    load data local inpath '/data/hivetest/anal.txt' into table analytical;

    Hive的分析函数的使用

     

    语句1:

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    我们看结果

    Hive的分析函数的使用

     

    语句2

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    语句3

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    语句4

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    语句5

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    语句6

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    已上是窗口和基本语句的使用。

    我们来看ROW_NUMBER

    Hive的分析函数的使用

     

    将每个部门薪资最高的那个人的薪资降序排序并且显示唯一的编号ROW_NUMBER

    Hive的分析函数的使用

     

    Hive的分析函数的使用

     

    获取每个部门薪资最高的前两位(嵌套子查询)

    Hive的分析函数的使用

     

    Hive的分析函数的使用
  • 相关阅读:
    循环逗号分割数组!
    只是想好好学习一下!
    html元素水平垂直居中
    闭包知识点--笔记
    20160314
    从零开始做运维-零
    Nginx 和 CodeIgniter
    安装PIL库
    init
    NutUI3 多端实践之路
  • 原文地址:https://www.cnblogs.com/bqwzy/p/12528611.html
Copyright © 2020-2023  润新知