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;
相关推荐
chxii12 小时前
第五章:MySQL DQL 进阶 —— 动态计算与分类(IF 与 CASE WHEN)多表查询
数据库·mysql
Mr_Xuhhh12 小时前
五种IO模型与非阻塞IO
数据库
百***680412 小时前
MySQL四种备份表的方式
mysql·adb·oracle
拾零吖12 小时前
数据库 - SQL
数据库·sql
不会c嘎嘎12 小时前
MySQL -- 库的操作
数据库·mysql
陌上桑花开花12 小时前
DBeaver常用配置
数据库
百***874412 小时前
MySQL 查看有哪些表
数据库·mysql·oracle
曹牧12 小时前
Oracle:查询当前正在等待执行的SQL语句
linux·数据库·oracle
_Kafka_12 小时前
在 Oracle Data Guard 环境中,手工将备库(Standby)切换为主库(Primary)
数据库·oracle
百***241312 小时前
oracle使用PLSQL导出表数据
数据库·oracle