源数据

+-----------+-------+-------+-------+
| grade_id  |  yw   |  sx   |   zz  |
+-----------+-------+-------+-------+
| 1         | 98.0  | 0.0   | 0.0   |
| 2         | 0.0   | 80.0  | 78.0  |
| 5         | 88.0  | 66.0  | 99.0  |
+-----------+-------+-------+-------+
1,98.0,0.0,0.0
2,0.0,80.0,78.0
5,88.0,66.0,99.0

想得到的结果:

 +--------------+------------------+---------------+
|    grade_id  |  subject_name    |  max_score    |
+--------------+------------------+---------------+
| 1            | 语文               | 98.0        |
| 2            | 数学               | 80.0        |
| 2            | 政治               | 78.0        |
| 5            | 语文               | 88.0        |
| 5            | 数学               | 66.0        |
| 5            | 政治               | 99.0        |
+--------------+------------------+---------------+

建表

create table if not exists test.tb_ms2 (grade_id int, yw double, ss double, zz double)
row format delimited fields terminated by ",";

导入数据

load data local inpath "/doit16/ms2.txt" into table tb_ms2;

解法1:

SELECT grade_id,split(cs, ':') [0] AS subject_name,split(cs, ':') [1] AS score
FROM (SELECT grade_id,concat_ws(',', cast(yw AS string), cast(ss AS string), cast(zz AS string)) AS sub_scoreFROM (SELECT grade_id,concat_ws(':', 'yw', cast(yw AS string)) AS yw,concat_ws(':', 'ss', cast(ss AS string)) AS ss,concat_ws(':', 'zz', cast(zz AS string)) AS zzFROM tb_ms2) t1) t2 LATERAL VIEW explode(split(sub_score, ',')) susc AS cs;

解法2:

selectgrade_id,subject,score
from
(selectgrade_id,str_to_map(concat_ws(',',yw,ss,zz)) as subjectsfrom(selectgrade_id,concat_ws(':','yw',cast(yw as string)) as yw,concat_ws(':','ss',cast(ss as string)) as ss,concat_ws(':','zz',cast(zz as string)) as zzfrom tb_ms2)t1
)t2
lateral view explode(subjects)s as subject,score

Hive练习题之列转行相关推荐

  1. Hive _偏门常用查询函数(二)附带实例(列转行、窗口函数)

    接上篇博客: Hive _偏门常用查询函数(一)附带实例 https://blog.csdn.net/qq_41946557/article/details/102904642 列转行 1.函数说明 ...

  2. hive 行转列和列转行的方法_面试常考!SQL行转列和列转行

    关注上方"数据挖掘工程师",选择星标,关键时间,第一时间送达!行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SE ...

  3. hive 如何将数组转成字符串_hive详细笔记(八)-Hive之列转行和行转列(附带讲解视频 )...

    1 行转列 1.1 函数 CONCAT(string A/col, string B/col-):返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1 ...

  4. Hive SQL中的concat、concat_ws、concat_group列转行,行转列

    目录 1.concat函数,concat_ws函数,concat_group函数 CONCAT() 函数 2.CONCAT_WS(SEPARATOR ,collect_set(column)) 等价于 ...

  5. Hive 之collect_list/collect_set(列转行)

    Hive笔记之collect_list/collect_set(列转行) Hive中collect相关的函数有collect_list和collect_set. 它们都是将分组中的某列转为一个数组返回 ...

  6. Hive之行转列/列转行

    1.行转列 场景:在hive表中,一个用户会有多个人群标签,List格式(逗号分隔如要转成List),有时我们需要统计一个人群标签下有少用户,这是就需要使用行转列了 例如,user_crowd_inf ...

  7. Hive ,Hsql行转列、列转行实现

    HQL中实现行列转换 其实并不用纠结哪个是行转列.哪个是列转行,明白二者之间的需求即可 在Hive sql应用中会遇到"行转列"和"列转行"的场景,下面介绍其基 ...

  8. hive Sql列转行使用explode的注意事项-null值处理

    hive Sql列转行使用explode的注意事项-null值处理 日常工作中,我们经常会用Lateral View 结合explode将数据炸裂,但是该方法对应explode的内容是有非null限制 ...

  9. python列转行函数_Python pandas 列转行操作详解(类似hive中explode方法)

    最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题.找了一番资料后成功了,记录一下. 1. 如果需要爆炸的只有一列: df=pd.DataFrame({'A':[1,2 ...

最新文章

  1. NVIDIA 认证系统
  2. 论前端工程师如何应对西电教学评估系统
  3. jdbcutils.java_空指针异常错误哪个地方错了Exception in thread main (JdbcUtils.java:62) main(JdbcUtils.java:87)...
  4. mysql创建用户并授登录权限_mysql创建用户并授予权限
  5. python有趣的小项目-10 个最值得 Python 新人练手的有趣项目
  6. rust腐蚀 木制窗户怎么修_冬天装修后怎么去除甲醛?紧闭门窗和准备一盆水,轻松教你解决!...
  7. 阿里云李响荣获 2020 中国开源杰出贡献人物奖,我们找他聊了聊开源和云原生
  8. qt mysql读写_QT读写Sqlite数据库
  9. JQuery 方法查询大全
  10. 单片机编程用什么软件?单片机开发软件有哪些?
  11. 机器学习:决策树算法案例(西瓜数据集3.0)
  12. 算法:中国象棋中马的最少步数走法和不重复周游走法的实现(利用图论算法中的BFS和DFS)
  13. 51 温度传感器 DS18B20程序代码
  14. 高斯投影坐标正反算公式
  15. 【经验分享】调试STM32F107VC单片机驱动DP83848以太网PHY芯片时遇到的问题
  16. 用CHATGPT做微信视频号和抖音大神,就这几步!
  17. 那年的中秋——杂乱无章篇 2011年9月10日 阴
  18. 12V铅酸电池充放电保护板
  19. Cinema 4D(一):初识C4D
  20. 51nod3146 绿豆蛙的归宿

热门文章

  1. JAVA面试题大全(含答案)
  2. Tableau的雷达图和凹凸图
  3. TikTok营销策略 如何打造TikTok爆款视频?
  4. 360和360极速浏览器无法打开vue项目的问题
  5. vue引入百度地图实现轨迹绘制
  6. python批量下载ECMWF欧洲中心数据
  7. 国嵌,够欠!---ARM在线教育误区
  8. Kmdtut 10---注册表
  9. 分析问题之三步走方法
  10. JVM内存与垃圾回收篇——堆