hive 行转列

行转列的常规做法是,group by+sum(if())【或count(if())】

建表:

复制代码
CREATE TABLE table2 (
    year INT,
    month INT,
    amount DOUBLE
);

INSERT INTO table2 (year, month, amount) VALUES
    (1991, 2, 1.2),
    (1991, 3, 1.3),
    (1991, 4, 1.4),
    (1992, 1, 2.1),
    (1992, 2, 2.2),
    (1992, 3, 2.3),
    (1992, 4, 2.4);

查询:

首先建立子查询

复制代码
select *,
    if(month=1,amount,0) as a,
    if(month=2,amount,0) as b,
    if(month=3,amount,0) as c,
    if(month=4,amount,0) as d
from table2

然后分组求和一下:

复制代码
select year,sum(a) as m1,
     sum(b)as m2,
     sum(c) as m3,
     sum(d) as m4
from
(
select *,
    if(month=1,amount,0) as a,
    if(month=2,amount,0) as b,
    if(month=3,amount,0) as c,
    if(month=4,amount,0) as d
from table2
 )t1
 group by year

****2.腾讯游戏

首先建表

复制代码
CREATE TABLE table3 (
    ddate varchar(20),
    shengfu varchar(20)
);
insert INTO table3  values ('2015-05-09', "胜"),
('2015-05-09', "胜"),
('2015-05-09', "负"),
('2015-05-09', "负"),
('2015-05-10', "胜"),
('2015-05-10', "负"),
('2015-05-10', "负");

查询

复制代码
select ddate,
SUM(case when shengfu = '胜' then 1 else 0 end) `胜`,
SUM(case when shengfu = '负' then 1 else 0 end) `负`
from table3
group by ddate
相关推荐
`林中水滴`3 小时前
Iceberg vs Hudi
数据仓库
奥利文儿3 小时前
【虚拟机】Ubuntu24安装Miniconda3全记录:避坑指南与实践
大数据·数据仓库·人工智能·数据库开发·etl·虚拟机·etl工程师
飞Link4 小时前
【Hadoop】Linux(CentOS7)下安装Hadoop集群
大数据·linux·hadoop·分布式
飞Link4 小时前
【Sqoop】Linux(CentOS7)下安装Sqoop教程
linux·hive·hadoop·sqoop
飞Link5 小时前
【Hive】Linux(CentOS7)下安装Hive教程
大数据·linux·数据仓库·hive·hadoop
心止水j7 小时前
hbase 电商1
hive
菜鸟冲锋号8 小时前
适配AI大模型非结构化数据需求:数据仓库的核心改造方向
大数据·数据仓库·人工智能·大模型
小鸡脚来咯8 小时前
Hive分桶表:大数据开发的性能优化利器
大数据·hive·性能优化
木卫二号Coding9 小时前
hivesql 字段aa值 如何去掉前面的0
hive
老徐电商数据笔记1 天前
数据仓库工程师在AI时代的走向探究
数据仓库·人工智能