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
相关推荐
Hadoop_Liang1 分钟前
Hive 多表查询案例
数据仓库·hive·hadoop
全栈开发圈2 小时前
新书速览|Hadoop与Spark大数据全景解析(视频教学版)
大数据·hadoop·spark
火龙谷5 小时前
【hadoop】HBase shell 操作
大数据·hadoop·hbase
RestCloud5 小时前
如何借助ETL数据集成工具实现数据一致性?
数据仓库·api·etl·数字化转型·数据转换·数据抽取·集成平台
随缘而动,随遇而安5 小时前
第五十二篇 浅谈ETL系统设计
大数据·数据仓库·数据分析·数据库开发·数据库架构
猫头虎5 小时前
浅谈国产数据库多租户方案:提升云计算与SaaS的资源管理效率
大数据·数据库·数据仓库·sql·云计算·时序数据库·kingbasees
anqi276 小时前
Spark和Hadoop之间的对比和联系
大数据·开发语言·hadoop·spark
痕51716 小时前
spark和Hadoop之间的对比和联系
大数据·hadoop·spark
CXH72817 小时前
hadoop分布式部署
大数据·hadoop·分布式
晴天彩虹雨17 小时前
实时数仓体系概览与架构演进
数据仓库·clickhouse·架构·flink·kafka