case when 语句 类似于 Java中的 switch 语句
switch (choose){
case 1:
case 2:
case 3:
}
case 变量或表达式
when 值1 then 语句1;
when 值2 then 语句2;
- 数据准备
name | dept_id | sex |
---|---|---|
悟空 | 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)