CASEWHEN的用法

本文详细介绍了Hive中的CASEWHEN条件语句,包括其基本语法、在数据转换、分类汇总和复杂条件过滤中的应用。强调了ELSE关键字的重要性以及使用时的注意事项。
摘要由CSDN通过智能技术生成

基本语法
CASE WHEN语句是Hive中的条件语句之一,通常用于根据给定的条件从多个分支中选择一个返回结果。它的基本语法如下

SELECT
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN condition3 THEN result3

ELSE result
END
FROM table_name
其中,condition是一个布尔表达式,如果成立,就返回对应的结果;如果所有条件均不成立,则返回ELSE中的结果。我们也可以省略掉ELSE关键字,这样如果所有条件均不成立,则返回NULL。

注意:省略掉ELSE关键字,这样如果所有条件均不成立,则返回NULL。

在使用过程中会经常忘记ELSE处理,以为不写ELSE,不满足条件的会正常显示,其实是没有了。

二、常用场景
CASE WHEN语句通常用于数据转换、分类和聚合等场景中。

  1. 数据转换
    在数据仓库中,我们经常需要将原始数据转换成适合分析和处理的格式。例如,在某个表中,可能存在分数字段,我们需要将分数字段转换成等级字段,可以使用CASE WHEN语句:

SELECT
student_name,
score,
CASE
WHEN score >= 90 THEN ‘A’
WHEN score >= 80 THEN ‘B’
WHEN score >= 70 THEN ‘C’
WHEN score >= 60 THEN ‘D’
ELSE ‘F’
END AS grade
FROM student_scores;
根据分数字段(score)生成等级字段(grade)。

  1. 分类汇总
    CASE WHEN语句还可以用于分类汇总。例如,我们需要查询每个部门中工资最高的员工:

SELECT
department_name,
MAX(
CASE
WHEN salary >= 5000 THEN salary
ELSE NULL
END
) AS max_salary
FROM employee
GROUP BY department_name;
根据部门名称分组,然后在每个组中选择工资最高的员工。

3.复杂的条件过滤筛选。
where
(case when a ‘%语文%’ then b<>‘三年级’ else 1=1 end);
过滤掉a包含语,而且b不是三年级的数据,注意else内容不能少,否则剩下的内容被过滤掉了~

注意点:
then之后不要写成条件表达式了

THEN result1 。 不要写成条件表达式了

select (case when a ‘%语文%’ then b<>‘三年级’ then b=‘四年级’ end)

then b=‘四年级’ 这是一个条件表达式,只会返回True或者False。THEN之后是值。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值