hive-sql 计算每年在校生人数

sql:

用到函数 space() :生产空格 split 切分空格

posexplode 炸裂函数 返回下标和具体指

sql 复制代码
with data as (
--             主键        入学年份            人数            学制
    select 1 as id , 2001 as yy , 1200 as stu_num , '3' as stu_len union all
    select 2 as id , 2000 as yy , 1300 as stu_num , '5' as stu_len union all
    select 3 as id , 2003 as yy , 1400 as stu_num , '4' as stu_len union all
    select 4 as id , 2002 as yy , 1500 as stu_num , '3' as stu_len union all
    select 5 as id , 2002 as yy , 1600 as stu_num , '4' as stu_len union all
    select 6 as id , 2014 as yy , 1600 as stu_num , '4' as stu_len union all
    select 7 as id , 2015 as yy , 1600 as stu_num , '4' as stu_len union all
    select 8 as id , 2015 as yy , 1600 as stu_num , '4' as stu_len union all
    select 9 as id , 2015 as yy , 1600 as stu_num , '4' as stu_len union all
    select 10 as id , 2015 as yy , 1600 as stu_num , '4' as stu_len union all
    select 11 as id , 2016 as yy , 1600 as stu_num , '4' as stu_len union all
    select 12 as id , 2016 as yy , 1600 as stu_num , '4' as stu_len union all
    select 13 as id , 2016 as yy , 1600 as stu_num , '4' as stu_len union all
    select 14 as id , 2016 as yy , 1600 as stu_num , '4' as stu_len union all
    select 15 as id , 2016 as yy , 1600 as stu_num , '4' as stu_len 
)
SELECT
  endyy,
  SUM(stu_num)
FROM
  (
    SELECT
      id,
      (yy + pos) AS endyy,
      stu_num,
      stu_len,
      val
    FROM
      data LATERAL view posexplode(split(space(CAST(stu_len AS INT) -1),' ')) t AS pos,
      val
  ) t
GROUP BY
  endyy

结果:

相关推荐
likangbinlxa1 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
野生技术架构师3 小时前
SQL语句性能优化分析及解决方案
android·sql·性能优化
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
冰暮流星4 小时前
sql语言之分组语句group by
java·数据库·sql
l1t5 小时前
DeepSeek总结的DuckDB使用 WITH RECURSIVE 和 USING KEY 进行聚合的特性
sql·duckdb
l1t5 小时前
DeepSeek总结的PostgreSQL解码GIF文件SQL移植到DuckDB的性能优化方法
sql·postgresql·性能优化
猫头虎6 小时前
基于信创openEuler系统安装部署OpenTeleDB开源数据库的实战教程
数据库·redis·sql·mysql·开源·nosql·database
kali-Myon6 小时前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
无级程序员7 小时前
大数据Hive之拉链表增量取数合并设计(主表加历史表合并成拉链表)
大数据·hive·hadoop