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;
相关推荐
皮皮冰燃15 小时前
关系数据库-10-[mysql5和mysql8]在windows中安装为服务并共存
windows·mysql
安审若无15 小时前
Oracle 打补丁指南
数据库·oracle
樱花的浪漫16 小时前
Cuda reduce算子实现与优化
数据库·人工智能·深度学习·神经网络·机器学习·自然语言处理
随心............16 小时前
sqoop采集完成后导致hdfs数据与Oracle数据量不符的问题。怎么解决?
hive·hadoop·sqoop
啊森要自信16 小时前
【MySQL 数据库】MySQL用户管理
android·c语言·开发语言·数据库·mysql
kkkkk02110616 小时前
Redis八股
数据库·redis·缓存
Liu1bo16 小时前
【MySQL】表的约束
linux·数据库·mysql
胖胖的战士17 小时前
Mysql 数据库迁移
数据库·mysql
星光一影17 小时前
大型酒店管理系统源码(多酒店版)
mysql·php
czhc114007566317 小时前
LINUX1012 mysql GLIBC安装
数据库·mysql