当前位置:网站首页 > Haskell函数式编程 > 正文

pivot和unpivot函数用法(pivot函数 hive)



pivot行转列函数

unpivot列转行函数

在学习之前,我个人觉得很多时候行转列 列转行,一行转多行,一列变多列,这些概念都不是很清楚

先看看网上说法 行转列、列转行 - 知乎

所谓行转列,即将一行数据转成多行显示,或者说将多列数据转成一列显示。通常将转化后的列名为某一行中某一列的值,来识别原先对应的数据

所谓列转行,即将多行转为一行显示,或者说将一列转为多列显示。通常转化后将某一列distinct后的值作为列名,将此值对应的多行数据显示成一行

又有人评论说上面的说法反了

搞得我也迷惑了。再次搜索MySQL的行转列与列转行_什么是 列转行、行转列

pivot函数 mysql pivot函数 hive_数据库

pivot函数 mysql pivot函数 hive_oracle_02

这里有句话说的好,

行转列 就是行数少了列数多了。

列转行 就是列数少了行数多了。

一列转多列 就是行数不变,列数多了

一行转多行 就是列数不变,行数多了

所以这才是真正的概念,因为a转b 肯定是a转化为b,一个少一个多。

——————————————————————————————————————————

pivot语法个人总结为

数据准备

--如果oracle执行失败因为复制的时候多了空格。。自己处理

开始实战。

pivot函数 mysql pivot函数 hive_pivot函数 mysql_03

----这里我先说下 为什么要行转列??什么情况下需要行转列,各位考虑过没有?

pivot函数 mysql pivot函数 hive_数据库_04

这张图和上面那张图 都能够看到学生的各科成绩,但是下面的图看起来更加直观一点,是不是更好呢? 我觉得不一定,因为每个人看待问题得角度不一样。

其实要是吹牛逼的话 还可以说下,存储的数据大小不一样,

最上面的是3*10 主要存的是 cc1 英语 12

下面的是4*10 主要寸的是cc1 24 12 44  

上面的英语两个汉字占的空间可比下面占的多点。

好了直接实战。

1.显示每个学生的各科成绩

pivot函数 mysql pivot函数 hive_学习_05

--这里还是注意 这个函数pivot 和table还是一起的,说明是对整张表去列转行

--这个sum 啥用没有 你换成 avg min max 都一样

如何用hive表示呢?hive没有这类函数 直接group by 来处理

hive版本

--这也没啥好说的,就是注意一个问题 这里也用了sum 其实换做avg max也行 min就算了。

pivot函数 mysql pivot函数 hive_学习_06

这种类似上面的。

--反正就是group by

2.显示每个学生的总成绩

pivot函数 mysql pivot函数 hive_学习_07

hive 如何实现呢?

第一步 先求sum总分

pivot函数 mysql pivot函数 hive_行转列_08

反正就是这么个语法 我的不一定最好,只是一个思路。

unpivot

语法

select * from table pivot( --注意这里啊 pivot函数是对 table 进行行转列 table pivot是一个整体

聚合函数(column1) --column1你要聚合的字段

数据准备

直接将pivot的数据转化下久iu是unpivot的了 这两个函数本身就是相互转化的。

pivot函数 mysql pivot函数 hive_行转列_09

--里面的分数我自己随便改了点 不影响。

pivot函数 mysql pivot函数 hive_学习_10

unpivot简单使用 行转列之一行转多列

pivot函数 mysql pivot函数 hive_数据库_11

如何用hive语法,其实说mysql语法也行。实现如上功能呢?

上面行转列pivot 我们都是采用group by

那么列转行unpiovt 一般都是采用 union all。

就这样吧

总结下

pivot 我们在hive就用 case when +group by 来实现

unpivot我们在hive就用 union all来实现

到此这篇pivot和unpivot函数用法(pivot函数 hive)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 支付方式图片图标(支付方式图片图标怎么设置)2025-11-04 12:18:07
  • 反激电路公式(反激电路的工作过程)2025-11-04 12:18:07
  • max的函数功能是什么(max函数的含义)2025-11-04 12:18:07
  • 字符串转换为int数组(字符串转换为int数组的函数)2025-11-04 12:18:07
  • cnn算法公式(cnn算法步骤)2025-11-04 12:18:07
  • pcap文件(pcapng文件格式)2025-11-04 12:18:07
  • 进程控制块的组织方式有哪几种?(进程控制块的组织方式有哪几种)2025-11-04 12:18:07
  • 苹果注册美区账号支付方式怎么填(苹果美区id支付方式)2025-11-04 12:18:07
  • modbus RTU报文格式(modbus RTU报文格式怎么写入plc)2025-11-04 12:18:07
  • rm计算公式(rm计算公式健身)2025-11-04 12:18:07
  • 全屏图片