HiveSQL——借助聚合函数与case when行转列

一、条件函数

if 条件函数

if函数是最常用到的条件函数,其写法是if(x=n,a,b), x=n代表判断条件,如果x=n时,那么结果返回a ,否则返回b。

sql 复制代码
select
    if(age < 25 or age is null, '25岁以下', '25岁以上') as age_cnt,
    count(1)  as number
from table1
group by age_cnt;

case when

case when 与if的作用基本相同,也是按照条件更换列中的内容 ,区别是case when 可以对 多个条件进行转换,需要注意的是:结尾需要加end作为结束标志

sql 复制代码
case 测试表达式
when 简单表达式1 then 结果表达式1
when 简单表达式2 then 结果表达式2
.......

when 健达表达式n then 结果表达式n
[else 结果表达式 n+1]
end
sql 复制代码
--举例:
select case when age <25 or age is null then '25岁以下'
             else '25岁及以上'
             end as  age_cnt,
count(1) as  number
from table1 
group by age_cnt;

-- 举例:
select device_id,
       gender,
  case when age<20 then '20岁以下'
       when age>=20 and age<=24 then '20-24岁'
       when age>=25 then '25岁及以上'
       else '其他'
       end as age_cut
from table1;

二、运用案例

2.1 行转列

问题描述

数据准备

sql 复制代码
 create table if not exists test
    (
        col1   string comment '',
        col2   string comment '',
        col3    string comment ''
    ) comment '测试表';

    insert overwrite table test
    values ('a','g','11'),
           ('a','f','23'),
           ('a','d','9'),
           ('b','g','5'),
           ('b','f','8'),
           ('b','d','47');

数据分析

利用case when 进行行转列

sql 复制代码
select
    col1,
    case col2 when 'g' then col3 else 0 end as g,
    case col2 when 'f' then col3 else 0 end as f,
    case col2 when 'd' then col3 else 0 end as d
from test;

最后,分组求max值即可

sql 复制代码
select
    col1,
    max(case col2 when 'g' then col3 else 0 end) as g,
    max(case col2 when 'f' then col3 else 0 end) as f,
    max(case col2 when 'd' then col3 else 0 end) as d
from test
group by col1;

最终的输出结果:

小结

相关推荐
ebok.5 小时前
国产大模型落地业务系统的优选载体:京微智枢信创 AI 业务支撑平台
大数据·人工智能·低代码·ai
民乐团扒谱机7 小时前
【微实验】组合优化matlab实战(马科维茨投资模型):在收益与风险之间,寻找最优的人生配比
大数据·人工智能·算法·机器学习·数学建模·matlab·组合优化
星野川崎2067 小时前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
小柯南敲键盘8 小时前
电商图片翻译工具推荐,批量处理主图视频字幕,免费试用
大数据·人工智能·python·音视频
观远数据8 小时前
零售连锁BI选型清单:什么样的场景适合ChatBI,什么样的场景不适合
大数据·人工智能·零售
大大大大晴天9 小时前
实时数仓怎么建:基于 StarRocks 的分层设计与实践
大数据
roman_日积跬步-终至千里10 小时前
【计算资源节省与稳定性治理】自助查询系统请求幂等性设计
大数据
小玮看世界11 小时前
当“安全“变成“教训“:《拟人化暂行办法》时代,AI护栏的过度拒答之困与破局
大数据·人工智能
FserSuN12 小时前
回顾Spark的概念与应用
大数据·分布式·spark
一知半解仙13 小时前
大国博弈与机器人纪元:我们正站在怎样的历史拐点?
大数据·人工智能·机器人