fonction cas :
est une fonction multi-branches qui renvoie l'une des nombreuses expressions de résultat possibles en fonction de la valeur d'une liste de conditions.
Fonction de cas simple :
case 测试表达式
when 简单表达式1 then 结果表达式1
when 简单表达式2 then 结果表达式2..
when 简单表达式3 then 结果表达式n
[else 结果表达式n+1]
Exemple : recherchez le numéro de classe, le nom de la classe, le numéro de département et le numéro d'enseignant de la classe des élèves dans la table de classe, et traitez le numéro de département comme suit :
Lorsque le numéro de série est 1, il affiche "Département informatique" ; lorsque le numéro de série est 2, il affiche "Département d'ingénierie logicielle" ; lorsque le numéro de système est 3, il affiche "Département Internet des objets"
select 班号,班名 case 系号
when 1 then ‘软件工程系’
when 2 then '计算机系'
when 3 then '物联网系'
end as 系号,班主任号
from 班级表
Fonction de recherche de cas :
case
when 布尔表达式1 then 结果表达式1
when 布尔表达式2 then 结果表达式2...
when 布尔表达式3 then 结构表达式n
[else 结果表达式n+1]
end
Exemple : Interroger les résultats 101 et les afficher sous forme de note
select 学号,课程号,
case
when 成绩>=90 then‘优’
when 成绩 between 80 and 90 then'良'
when 成绩 between 70 and 79 then'中'
when 成绩 between 60 and 69 then'及格'
when 成绩<60 then'不及格'
end 成绩
from 成绩表
where 课程号='101';
Exemple : Compter le nombre de garçons et de filles dans chaque classe. L'en-tête des résultats statistiques est : numéro de classe, nombre de garçons, nombre de filles
select 班号,
count(case when 性别='男' then '男' end)男生数
count(case when 性别='女' then'女' end)女生数
from 学生表 group by 班号;
Exemple : Pour juger de la note de réussite et compter le nombre de personnes à chaque note.
select
case
when grade between 85 and 100 then '优'
when grade between 70 and 84 then'良'
when grade between 60 and 69 then'及格'
else '不及格'
end 等级,count(*)人数
from tb
group by 等级;
select case when age<25 or age is null then '25岁以下'
when age>=25 then '25岁及以上'
end age_cut,count(*)number
from user_profile
group by age_cut
select device_id,gender,
case
when age>=25 then '25岁及以上'
when age>=20 then '20-24岁'
when age<20 then '20岁以下'
else '其他'
end as age_cut
from user_profile