当前位置: 首页 > news >正文

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

一、条件函数

if 条件函数

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

selectif(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 testvalues ('a','g','11'),('a','f','23'),('a','d','9'),('b','g','5'),('b','f','8'),('b','d','47');

数据分析

利用case  when 进行行转列

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

selectcol1,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;

 最终的输出结果:

小结

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Qt 学习之路】在 Qt 使用 ZeroMQ
  • JVM-双亲委派机制
  • 华为机考入门python3--(9)牛客9-提取不重复的整数
  • 【Django-ninja】在django ninja中处理异常
  • ANSI Escape Sequence 下落的方块
  • maven java 如何打纯源码zip包
  • “极简壁纸“爬虫JS逆向·实战
  • 微信小程序:父组件调用子组件的方法
  • 【OrangePi Zero2的系统移植】交叉编译工具链配置、wiringOP库、智能分类工程代码
  • 【Git教程】(一)基本概念 ——工作流、分布式版本控制、版本库 ~
  • 基于物联网的实时数据分析(简单介绍)
  • Linux下的文件权限与访问控制:守护你的数据宝藏
  • Open CASCADE学习|环形弹簧建模
  • 极狐GitLab 与 Datadog 的集成配置
  • 代码随想录算法训练营第三十三天丨[重看] 最大子数组、1143. 最长公共子序列/15.4 最长公共子序列
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 77. Combinations
  • iOS小技巧之UIImagePickerController实现头像选择
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • js中的正则表达式入门
  • Phpstorm怎样批量删除空行?
  • Yeoman_Bower_Grunt
  • 前端面试之闭包
  • 使用docker-compose进行多节点部署
  • 移动端 h5开发相关内容总结(三)
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (20050108)又读《平凡的世界》
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)计算机毕业设计大学生兼职系统
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十) 初识 Docker file
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)创业的注意事项
  • ****Linux下Mysql的安装和配置
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net 7 上传文件踩坑
  • .net 7和core版 SignalR
  • .net core 6 redis操作类
  • .NET MVC第三章、三种传值方式
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net程序帮助文档制作
  • // an array of int
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [] 与 [[]], -gt 与 > 的比较