Hive详解(4)

Hive

窗口函数

分析函数

  1. 聚合函数,例如sumavgmaxmin

  2. 移位函数

    1. lag(colName, n):以当前行为基础,来处理第前n行的数据

    2. lead(colName, n):以当前行为基础,来处理第后n行的数据

    3. ntile(n):要求数据必须有序,将有序的数据依次放入n个桶中,保证每个桶中的数据几乎一致,相差最多不超过1个

  3. 排序函数

    1. row_number:数据排序之后,按顺序给数据进行编号,即使数据相同,也是给定不同的编号

    2. rank:数据排序之后,按顺序给数据进行编号,如果数据相同,则给定相同的序号,会产生空位

    3. dense_rank:数据排序之后,按顺序给数据进行编号,如果数据相同,则给定相同的序号,但是不会产生空位

移位函数案例

  1. 需求二:查询每一位顾客的消费明细以及上一次的消费时间

    复制代码
    select *,
           lag(order_date, 1) over (partition by name order by order_date) as last_order_date
    from orders;
  2. 需求三:查询最早进店消费的前20%的顾客信息

    复制代码
    select * from (
        select *,
               ntile(5) over (order by order_date) as n
        from orders
    ) t1 where n = 1;

排序函数案例

  1. 原始数据

    复制代码
    Bob Chinese 85
    Alex Chinese 76
    Bill Chinese 78
    David Chinese 92
    Jack Chinese 69
    Lucy Chinese 74
    LiLy Chinese 78
    Bob Maths 91
    Alex Maths 82
    Bill Maths 69
    David Maths 60
    Jack Maths 69
    Lucy Maths 71
    LiLy Maths 82
    Bob English 60
    Alex English 62
    Bill English 85
    David English 85
    Jack English 69
    Lucy English 78
    LiLy English 93
  2. 案例

    复制代码
    -- 建表
    create table scores (
        name    string,
        subject string,
        score   int
    ) row format delimited fields terminated by ' ';
    -- 加载数据
    load data local inpath '/opt/hive_data/scores' into table scores;
    -- 查询数据
    select *
    from scores tablesample (5 rows);
    -- 按科目对成绩进行降序排序
    select *,
           row_number() over (partition by subject order by score desc) as rn,
           rank() over (partition by subject order by score desc)       as ra,
           dense_rank() over (partition by subject order by score desc) as dr
    from scores;
    -- 获取各科目前三名的信息
    select * from (
        select *, rank() over (partition by subject order by score desc) as n from scores
    ) t where n <= 3;
相关推荐
Qspace丨轻空间20 分钟前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
Elastic 中国社区官方博客1 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws
Aloudata2 小时前
从Apache Atlas到Aloudata BIG,数据血缘解析有何改变?
大数据·apache·数据血缘·主动元数据·数据链路
水豚AI课代表2 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
拓端研究室TRL5 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据
黄焖鸡能干四碗5 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
编码小袁6 小时前
探索数据科学与大数据技术专业本科生的广阔就业前景
大数据
WeeJot嵌入式6 小时前
大数据治理:确保数据的可持续性和价值
大数据
zmd-zk7 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶7 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic