MySQL和Hive中的行转列、列转行

水善利万物而不争,处众人之所恶,故几于道💦

文章目录

    • MySQL
      • 1.行转列
      • 2.列转行
    • Hive
      • 1.行转列
      • 2.列转行
        • (1)侧窗
        • (2)union

MySQL

1.行转列

把多行转成列。直接group,sum(if())
在这里插入图片描述
在这里插入图片描述

2.列转行

在这里插入图片描述
在这里插入图片描述

Hive

1.行转列

在这里插入图片描述

select 
	name,
	sum(if(km='shuxue',cj,0)) shuxue,
	sum(if(km='yuwen',cj,0)) yuwen,
	sum(if(km='huaxue',cj,0)) huaxue 
from hzl 
group by name

在这里插入图片描述

2.列转行

(1)侧窗

hive中除了可以用常规的union all 外,还可以用侧窗
在这里插入图片描述

-- 侧窗写法
select 
	name,
	km,
	cj 
from lzh2 
	lateral view 
	explode(map('yuwen',yuwen,'shuxue',shuxue,'huaxue',huaxue)) tmp as km,cj;

在这里插入图片描述

(2)union
-- 常规写法
select name,'shuxue' km,shuxue cj from lzh2 
union all 
select name,'yuwen',yuwen from lzh2 
union all 
select name,'huaxue',huaxue from lzh2;

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿年、嗯啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值