[MYSQLクイックスタート]ケース関数

ケース関数:

は、条件のリストの値に基づいて、いくつかの可能な結果式の1つを返すマルチブランチ関数です。

単純なケース関数:

case 测试表达式
when 简单表达式1 then 结果表达式1
when 简单表达式2 then 结果表达式2..
when 简单表达式3 then 结果表达式n
[else 结果表达式n+1]

例:クラステーブル内の学生のクラス番号、クラス名、部門番号、およびクラス教師番号を照会し、部門番号を次のように処理します。

シリアル番号が1の場合は「コンピュータ部門」、シリアル番号が2の場合は「ソフトウェア工学部門」、システム番号が3の場合は「モノのインターネット部門」と表示されます。

select 班号,班名 case 系号
when 1 then ‘软件工程系’
when 2 then '计算机系'
when 3 then '物联网系'
end as 系号,班主任号
from 班级表

ケース検索機能:

case
when 布尔表达式1 then 结果表达式1
when 布尔表达式2 then 结果表达式2...
when 布尔表达式3 then 结构表达式n
[else 结果表达式n+1]
end

例:101の結果をクエリし、成績として表示します 

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';

 例:各クラスの男の子と女の子の数を数えます。統計結果のヘッダーは、クラス番号、男の子の数、女の子の数です。

select 班号,
count(case when 性别='男' then '男' end)男生数
count(case when 性别='女' then'女' end)女生数
from 学生表 group by 班号;

 例:達成度を判断し、各学年の人数を数える。

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

 

おすすめ

転載: blog.csdn.net/m0_52043808/article/details/124202656