Hive 案例——case when / if 查询

case when 语句 类似于 Java中的 switch 语句

switch (choose){
	case 1:

	case 2:

	case 3:
	
}
case 变量或表达式
when1 then 语句1;
when2 then 语句2;
  1. 数据准备
namedept_idsex
悟空A
大海A
宋宋B
凤姐A
婷姐B
婷婷B

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

A 2 1
B 1 2

3.创建本地 emp_sex.txt,添加数据

悟空	A	男
大海	A	男
宋宋	B	男
凤姐	A	女
婷姐	B	女
婷婷	B	女

4.创建 hive 表并导入数据

create table emp_sex(
name string, 
dept_id string, 
sex string) 
row format delimited fields terminated by "\t";

load data local inpath '/opt/module/data/emp_sex.txt' into table 
emp_sex;

5.按需求查询数据

(case when查询)

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;

(if查询)

select dept_id,
	sum(if(sex='男',1,0)) male_count,
	sum(if(sex='女',1,0)) female_count
from 
	emp_sex 
group by 
	dept_id;

结果如下

Total MapReduce CPU Time Spent: 21 seconds 690 msec
OK
dept_id	male_count	female_count
A	2	1
B	1	2
Time taken: 77.979 seconds, Fetched: 2 row(s)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值