首页 > 其他分享 >Hive 刷题—— 每年的在校人数

Hive 刷题—— 每年的在校人数

时间:2024-03-29 13:12:28浏览次数:20  
标签:len stu num 2020 Hive year 在校 select 刷题

问题描述

 year表示学生入学年度,num表示对应年度录取学生人数,stu_len表示录取学生的学制;说明:例如录取年度2018学制是3年,表示该批学生在校年份为2018~2019、2019~2020、2020-2021,在算每年的在校人数时,2018/2019/2020/2021年份都需要算上。

示例数据 

id    year    num    stu_len
1    2018    2000        3
2    2019    2000        3
3    2020    1000        4
3    2020    2000        3

参考实现

with temp as (select 2018 as year, 3 as stu_len, 2000 as num
              union all
              select 2019 as year, 3 as stu_len, 2000 as num
              union all
              select 2020 as year, 4 as stu_len, 1000 as num
              union all
              select 2020 as year, 3 as stu_len, 2000 as num)
select t.year,sum(t1.num) num
from (select min_year + pos as year
      from (select min(year) min_year, max(year + stu_len) max_year
            from temp) t
               lateral view posexplode(split(repeat(',', max_year - min_year), ',')) tbl as pos, val) t
         join temp t1 on t.year between t1.year and t1.year + t1.stu_len
group by t.year
order by 1;

标签:len,stu,num,2020,Hive,year,在校,select,刷题
From: https://www.cnblogs.com/wdh01/p/18097007

相关文章

  • 力扣刷题Days26-122.买股票最佳时期||(js)
    目录1,题目2,代码动态规划3,回顾与总结3.1解题思路回顾(1)定义状态(2)转移方程3.2javascript中语法二维数组的创建3.3动态规划状态变化的实现1,题目给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票......
  • Hive 刷题——HiveSql 实现分钟级的趋势图
    问题描述在Hive中,怎么用sql实现分钟级的趋势图?比如从交易表中,如何统计0点到每分钟的交易趋势图?原表:trade_A(trade_id,pay_time(格式是2020-08-0510:30:28),pay_gmv)。希望用sql实现分钟级的0点到当前分钟的GMV。结果表:result_A(minute_rn(分钟顺序),pay_gmv_td(每分钟的交易额,都是......
  • Oracle重做日志文件clear logfile与clear unarchived logfile浅析
    首先,从v$log动态视图中观察到ARC和STATUS两个字段STATUS:分为CURRENT、ACTIVE和INACTIVE三种,当数据库进程DBWn进行一次写入,脏数据从内存刷写到redologfile中,这时承载数据写入的redologfile状态即为CURRENT;而数据从redologfile拷贝到归档目录下时处于ACTIVE状态,完成数据从内存......
  • hiveserver2拒绝连接
    一、报错内容 二、解决办法基本都是core-site.xml文件中没做好代理导致的。在文件中添加如下配置<property><name>hadoop.proxyuser.xxx.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.x......
  • 第1章 Hive基本概念
    1.1什么是Hivehive简介Hive:由facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL的查询功能。2)Hive本质:将HQL转化成MapReduce程序。3)Hive的三个要点:Hive处理的数据存储在HDFS......
  • 刷题日记
    UpdateOn:2024/3/26P8867建造军营显然,当且仅当桥被摧毁时图才会变成两个子图,那么可以想到Tarjan求边双联通,重构成一棵树。定义\(f_{i,0/1}\)为强制只有根节点为\(u\)的子树内建筑军营,若里面有军营则,一定有被守卫的边与\(u\)相通。P3225[HNOI2012]矿场搭建分类......
  • 动态规划刷题(算法竞赛、蓝桥杯)--数字三角形(线性DP)
    1、题目链接:[USACO1.5][IOI1994]数字三角形NumberTriangles-洛谷#include<bits/stdc++.h>usingnamespacestd;intr;constintN=1010;inta[N][N];intmain(){ cin>>r; for(inti=1;i<=r;i++){ for(intj=1;j<=i;j++){ cin>>a[i][j]; ......
  • Hive 刷题——累计占比问题
    问题描述现在有一张每个年份的每个部门的收入表。现在需要算每个部门的收入占同类型部门的收入的占比和当年整个公司的收入占比。要求一条SQL计算出来。比如研发部和产品部属于同类型的,都是产研;财务部和人事部都属于职能。yeardeptincome2024研发部50002024......
  • 小阳同学刷题日记-209. 长度最小的子数组
        题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl,numsl+1,...,numsr-1,numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。    惯例,献上我自......
  • LeetCode刷题Day11(补卡)
    20.有效的括号题目链接:leetcode20.有效的括号文章讲解:代码随想录视频讲解:哔哩哔哩视频这题考察的是栈的使用,遍历字符串,如果是左括号存入栈中,如果是右括号则对比栈的头部是否为与之匹配的左括号,如果不是则返回false,最后若栈为空则正好匹配返回true,详细代码如下:cl......