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

一、条件函数

if 条件函数

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

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作为结束标志

case 测试表达式
when 简单表达式1 then 结果表达式1
when 简单表达式2 then 结果表达式2
.......

when 健达表达式n then 结果表达式n
[else 结果表达式 n+1]
end
--举例:
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 行转列

问题描述

   

数据准备

 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 进行行转列

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值即可

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;

 最终的输出结果:

小结

相关推荐

  1. Day3-struct类型、函数

    2024-02-08 08:34:04       15 阅读
  2. oracle 转行

    2024-02-08 08:34:04       7 阅读
  3. sql-(置)

    2024-02-08 08:34:04       13 阅读
  4. sql-2(置)

    2024-02-08 08:34:04       14 阅读
  5. sql-3(置)

    2024-02-08 08:34:04       11 阅读
  6. Hive进阶函数:inline() 和 struct() ,一

    2024-02-08 08:34:04       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-08 08:34:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-08 08:34:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-08 08:34:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-08 08:34:04       20 阅读

热门阅读

  1. 51 单片机入门 400 例

    2024-02-08 08:34:04       26 阅读
  2. LeetCode 第28天

    2024-02-08 08:34:04       32 阅读
  3. 12.Swift字典

    2024-02-08 08:34:04       26 阅读
  4. Linux增删ip

    2024-02-08 08:34:04       28 阅读
  5. Leetcode 139 单词拆分

    2024-02-08 08:34:04       28 阅读
  6. 基于3DGIS 的5G 基站规划创新

    2024-02-08 08:34:04       28 阅读