avatar

目录
HiveSQL之常用查询函数case

关键词:CASE WHEN THEN ELSE END

数据准备

name dept_id sex
悟空 A
大海 A
宋宋 B
凤姐 A
婷姐 B
婷婷 B

需求

求出不同部门男女各多少人。结果如下:

Code
1
2
A   2    1
B 1 2

创建本地emp_sex.txt,导入数据

Code
1
2
3
4
5
6
7
[ys@hadoop102 datas]$ vim emp_sex.txt
悟空 A 男
大海 A 男
宋宋 B 男
凤姐 A 女
婷姐 B 女
婷婷 B 女

创建hive表并导入数据

sql
1
2
3
4
5
6
create table emp_sex(
name string,
dept_id string,
sex string)
row format delimited fields terminated by "\t";
load data local inpath '/opt/module/datas/emp_sex.txt' into table emp_sex;

查询数据

sql
1
2
3
4
5
6
7
8
select 
dept_id,
sum(case sex when '男' then 1 else 0 end) male_count,
sum(case sex when '女' then 1 else 0 end) female_count
from
emp_sex
group by
dept_id;
  • 首先注意CASE WHEN THEN ELSE END的缺一不可
  • 也要注意sum函数的用法,sum(条件)是经常会用到的方法!!!
    • 比如sum(if XXX)就常在HiveSQL里面使用。
    • 例如:sum(if(dt='2020-05-27', order_count,0 )) order_count,本质其实是一样的。
文章作者: Yang4
文章链接: https://masteryang4.github.io/2020/05/26/HiveSQL%E4%B9%8B%E5%B8%B8%E7%94%A8%E6%9F%A5%E8%AF%A2%E5%87%BD%E6%95%B0case/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MasterYangBlog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论