当前位置: 首页 > news >正文

数据场景练习

1 行列转换

(1) 列拆分为多行

         把指定字段按指定分隔符进行拆分为多行,然后其它字段直接复制.

select字段列,hobby2
from tbl
-- lateral view udtf(expression) tablealias as columnalias (‘,’ columnalias)
lateral view explode(split(hobby,';')) temp as hobby2

(2) 行扁平化

        把同一组的多行数据合并成为一行.

select id, name, age, split(concat_ws(':',collect_list(hobby)),':')[0] as hobby1,split(concat_ws(':',collect_list(hobby)),':')[1] as hobby2,split(concat_ws(':',collect_list(hobby)),':')[2] as hobby3
from tbl
group by id, name, age;

(3) 列转行

        如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容变成不同的列,然后把多行数据转换为一行数据.

selectname,max(if(wek = '周一',work_hour,0)) as mon,max(if(wek = '周二',work_hour,0)) as tue,max(if(wek = '周三',work_hour,0)) as wed,max(if(wek = '周四',work_hour,0)) as thu,max(if(wek = '周五',work_hour,0)) as fi,max(if(wek = '周六',work_hour,0)) as sat,max(if(wek = '周日',work_hour,0)) as sun
from tbl
group by name

(4) 行转列

        把数据字段的字段名转换为一列,把数据行变为数据列.

select name, 'mon' as wek, mon as work_hour from tbl
union all
select name, 'tue' as wek, tue as work_hour from tbl
union all
select name, 'wed' as wek, wed as work_hour from tbl
union all
select name, 'thu' as wek, thu as work_hour from tbl
union all
select name, 'fri' as wek, fri as work_hour from tbl
union all
select name, 'sat' as wek, sat as work_hour from tbl
union all
select name, 'sun' as wek, sun as work_hour from tbl


http://www.mrgr.cn/news/24191.html

相关文章:

  • 新能源汽车BMS 学习笔记篇—AFE 菊花链通信中电容隔离 电感隔离的使用
  • submariner
  • 智能可视耳勺怎么用?可视耳勺使用方法!
  • 如何本地部署AI智能体平台,带你手搓一个AI Agent
  • Google出了一个黑科技,可以把书变成真人多角色对话的音频,效果真的很牛!
  • JAVA视觉盛宴短剧系统小程序源码
  • Elasticsearch基础(七):Logstash如何开启死信队列
  • 融云的实时音视频服务在哪些行业应用中表现突出?
  • kingbase 金仓数据库在 Windows 环境下安装、使用,node.js 连接
  • 大模型备案,全程配合包过拿到备案号
  • opencv学习:图像旋转的两种方法,旋转后的图片进行模板匹配代码实现
  • 《旧衣服的销路在哪里》
  • MYSQL的常用命令和函数
  • python-回文数(一)
  • 国家标准和行业标准有什么区别?如何办理国家标准?
  • 网上请假|基于springboot的学生网上请假系统设计与实现(附项目源码+论文+数据库)
  • 【数字IC自整资料】笔试相关
  • 【Linux】Linux权限历险记---组和用户的关系
  • 开源协议有哪些坑?来,比较一下~
  • 校篮球联赛系统小程序的设计