-- 按成绩将学生分组
select name, score,
case
when score >= 90 then '优秀'
when score >= 80 then '良好'
when score >= 70 then '中等'
when score >= 60 then '及格'
else '不及格'
end as level
from student;
-- 将性别转换为中文
select name, sex, age,
case sex
when 'M' then '男'
when 'F' then '女'
end as sex_zh
from student;
-- 统计不同区间范围的订单数量
select count(*) as order_num,
case
when amount
在上面的例子中,我们分别使用了第一种和第二种case语句的形式,通过不同的条件进行列值的转换和分组统计。可以发现,使用case语句可以让我们不需要使用复杂的if-else语句,简洁明了地实现相关的操作。
除了基本的case语句外,我们还可以使用一些高级的扩展语法,比如case表达式的嵌套、case语句的联合使用等。下面使用一个例子来说明:
-- 按照不同的年龄分组,并统计不同性别的学生数量
select age_group,
sum(case sex when 'M' then 1 else 0 end) as male_num,
sum(case sex when 'F' then 1 else 0 end) as female_num
from (
select name, sex, age,
case
when age between 5 and 10 then '5~10岁'
when age between 11 and 15 then '11~15岁'
when age between 16 and 20 then '16~20岁'
else '20岁以上'
end as age_group
from student
)
group by age_group;
在上述例子中,我们首先使用内层的case语句根据不同的年龄范围将学生分组,然后在外层使用了两个case语句分别计算男性和女性学生的数量,并进行了分组统计。可以看到,case语句的联合使用可以非常灵活地进行复杂的运算和数据处理。
综上所述,case语句是Oracle中非常重要的条件判断语句之一,可以广泛应用于数据分析、数据处理等方面。我们可以通过不同的方式和形式灵活地运用它,以满足各种不同的需求。