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

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

文章目录

MySQL

1.行转列

把多行转成列。直接group,sum(if())

2.列转行


Hive

1.行转列

sql 复制代码
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 外,还可以用侧窗

sql 复制代码
-- 侧窗写法
select 
	name,
	km,
	cj 
from lzh2 
	lateral view 
	explode(map('yuwen',yuwen,'shuxue',shuxue,'huaxue',huaxue)) tmp as km,cj;
(2)union
sql 复制代码
-- 常规写法
select name,'shuxue' km,shuxue cj from lzh2 
union all 
select name,'yuwen',yuwen from lzh2 
union all 
select name,'huaxue',huaxue from lzh2;
相关推荐
n***2656几秒前
Python连接SQL SEVER数据库全流程
数据库·python·sql
不会编程的小寒2 分钟前
数据库编程 面试
数据库·面试·职场和发展
枫叶丹423 分钟前
【Qt开发】Qt窗口(三) -> QStatusBar状态栏
c语言·开发语言·数据库·c++·qt·microsoft
optimistic_chen24 分钟前
【Redis 系列】深入理解Redis核心特性:全局命令、内部编码与单线程架构
数据库·redis·缓存·redis命令·xsheel·内部编码
r***l76624 分钟前
sql中COALESCE函数详解
数据库·sql
小熊officer26 分钟前
pgsql创建用户
数据库
Skrrapper30 分钟前
【编程史】微软的起家之路:一代传奇的诞生
数据库·c++·microsoft
q***311435 分钟前
【JAVA进阶篇教学】第十二篇:Java中ReentrantReadWriteLock锁讲解
java·数据库·python
y***n61439 分钟前
Redis设置密码
数据库·redis·缓存
瀚高PG实验室1 小时前
HGDB兼容性之oracle的rowid
数据库·oracle·瀚高数据库