zoukankan      html  css  js  c++  java
  • 项目实战从0到1之hive(15)hive实现连续三个月学生成绩都为A的记录

    1.数据
    s1,201801,A
    s1,201802,A
    s1,201803,C
    s1,201804,A
    s1,201805,A
    s1,201806,A
    s2,201801,A
    s2,201802,B
    s2,201803,C
    s2,201804,A
    s2,201805,D
    s2,201806,A
    s3,201801,C
    s3,201802,A
    s3,201803,A
    s3,201804,A
    s3,201805,B
    s3,201806,A
    2.建表
    create table if not exists student(name string,month string,degree string)
    row format delimited
    fields terminated by ','
    ;
    load data local inpath '/root/stu.txt' into table student;
    3.现要查询表中连续三个月以上degree均为A的记录?
    select
        a1.name,
        a1.month,
        a1.degree
    from
    (
        select
            name,
            month,
            degree,
            sum(if(degree = 'A', 1, 0)) OVER(PARTITION BY name ORDER BY month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS score1,
            sum(if(degree = 'A', 1, 0)) OVER(PARTITION BY name ORDER BY month ROWS BETWEEN 1 PRECEDING AND 1 following) AS score2,
            sum(if(degree = 'A', 1, 0)) OVER(PARTITION BY name ORDER BY month ROWS BETWEEN  CURRENT ROW AND 2 following) AS score3
        from student
    ) as a1
    where
        a1.score1 = 3 or
        a1.score2 = 3 or
        a1.score3 = 3
    结果:
    s1      201804  A
    s1      201805  A
    s1      201806  A
    s3      201802  A
    s3      201803  A
    s3      201804  A
    作者:大码王

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•?ω•?)っ???!

  • 相关阅读:
    Weebly轻松创建个人网站
    人生如游戏
    1 欧拉角与四元数计算机动画笔记
    图形学相关的一些数学基础书
    1047 Student List for Course (25 分)
    1124 Raffle for Weibo Followers (20 分)
    1065 A+B and C (64bit) (20 分)
    1036 Boys vs Girls (25 分)
    1039 Course List for Student (25 分)
    1054 The Dominant Color (20 分)
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/13637825.html
Copyright © 2011-2022 走看看