zoukankan      html  css  js  c++  java
  • hive之RANK排名


    RANK() 排序相同时会重复,总数不会变
    DENSE_RANK() 排序相同时会重复,总数会减少
    ROW_NUMBER() 会根据顺序计算

    《小小的案例》

    1)数据准备:
    #vi score.txt
    孙悟空 语文 87
    孙悟空 数学 95
    孙悟空 英语 68
    大海 语文 94
    大海 数学 56
    大海 英语 84
    宋宋 语文 64
    宋宋 数学 86
    宋宋 英语 84
    婷婷 语文 65
    婷婷 数学 85
    婷婷 英语 78


    2)需求:
    计算每门学科成绩排名。

    3)创建表:
    create table score(
    name string,
    subject string,
    score int)
    row format delimited fields terminated by " ";

    4)将数据导入到表中:
    load data local inpath '/xxx/score.txt' into table score;

    5)按需求查询数据
    select name,
    subject,
    score,
    rank() over(partition by subject order by score desc) rp,
    dense_rank() over(partition by subject order by score desc) drp,
    row_number() over(partition by subject order by score desc) rmp
    from score;

    7)结果展示:
    name subject score rp drp rmp
    孙悟空 数学 95 1 1 1
    宋宋 数学 86 2 2 2
    婷婷 数学 85 3 3 3
    大海 数学 56 4 4 4
    宋宋 英语 84 1 1 1
    大海 英语 84 1 1 2
    婷婷 英语 78 3 2 3
    孙悟空 英语 68 4 3 4
    大海 语文 94 1 1 1
    孙悟空 语文 87 2 2 2
    婷婷 语文 65 3 3 3
    宋宋 语文 64 4 4 4

  • 相关阅读:
    RF用户关键字
    RF循环分支
    RF使用
    RF变量
    RF介绍
    元件作用域
    元件介绍
    工作总结之测试
    港股通Level2介绍
    linux中配置yum源
  • 原文地址:https://www.cnblogs.com/yumengfei/p/11900720.html
Copyright © 2011-2022 走看看