SQL中CASE WHEN用法详解
|
CASE WHEN语句是SQL中的条件表达式,它提供了一种简单的方式来根据不同的条件执行不同的操作。在实际情境中,我们可能需要在数据查询中进行一些简单的转换或计算。CASE WHEN就可以方便地帮助我们完成这些工作。接下来,本文将详细解释CASE WHEN语句的用法及其在SQL查询中的应用。
一、CASE WHEN语句的基本结构 CASE WHEN语句的基本结构如下所示: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 … ELSE resultn END 这个语法中,我们首先使用CASE关键字开头,然后根据不同的条件使用WHEN关键字,并在每个条件后面指定结果。如果所有条件都不满足,就返回ELSE子句中指定的结果。最后使用END关键字闭合该CASE语句。需要注意的是,条件和结果都可以是任何SQL表达式。 下面是一个简单的例子,它使用CASE WHEN来计算一个学生的成绩: SELECT name, CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' ELSE 'C' END AS grade FROM students; 这个查询语句可以将学生的成绩分为A、B和C三个等级。当分数大于等于90时,等级为A;当分数在80到90之间时,等级为B;否则等级为C。
二、在查询中使用CASE WHEN CASE WHEN语句的主要用途是在查询结果中执行计算或条件转换。下面是一些具体的例子。 1.使用CASE WHEN语句进行数据分组 有时候,我们需要将数据按照某种规则进行分类并分组。在这种情况下,CASE WHEN语句可以派上用场。例如,我们想要基于年龄分组,分成18到25岁、26到35岁、36到45岁和45岁以上等四组。可以使用以下语句: SELECT COUNT(*) AS people_count, CASE WHEN age >= 18 AND age <= 25 THEN '18-25' WHEN age > 25 AND age <= 35 THEN '25-35' WHEN age > 35 AND age <= 45 THEN '36-45' ELSE '45 ' END AS age_group FROM people GROUP BY age_group; 这个查询可以对people表中的人员按照不同的年龄段进行分组,并计算在每个组中人数的总和。 2.使用CASE WHEN语句进行字符转换 在SQL中,有时我们需要将一个字符类型的字段转换为另一种字符类型。例如,我们可能需要替换一些字符或将其转换为大写或小写形式。在这种情况下,可以使用CASE WHEN语句来进行转换。例如,以下语句将people表中的名字转换为大写形式: SELECT CASE WHEN name IS NULL THEN NULL ELSE UPPER(name) END AS upper_name FROM people; 这个查询会使用CASE WHEN语句检查每个姓名是否为空,在不为空的情况下将其转换为大写形式。
3.使用CASE WHEN语句进行计算 CASE WHEN语句还可以用于进行简单的数学计算。例如,以下语句将people表中的收入分为3个等级: SELECT CASE WHEN income > 2000 THEN income * 0.8 WHEN income > 1000 THEN income * 0.9 ELSE income END AS new_income FROM people; 这个查询根据人们的收入将其分为3个等级,并分别进行计算。 三、高级用法 在实际情况中,CASE WHEN语句还可以使用一些高级用法。下面是一些例子: 1. CASE WHEN语句与聚合函数一起使用 有时,我们需要使用一条查询语句来计算多个不同条件的聚合函数。在这种情况下,可以使用CASE WHEN语句与聚合函数一起使用。例如,以下查询返回了people表中年龄在18到25岁之间和在25到35岁之间的人数,以及这些人的平均收入: SELECT COUNT(CASE WHEN age >= 18 AND age <= 25 THEN 1 END) AS people_count_18_25, COUNT(CASE WHEN age > 25 AND age <= 35 THEN 1 END) AS people_count_25_35, AVG(CASE WHEN age >= 18 AND age <= 25 THEN income WHEN age > 25 AND age <= 35 THEN income ELSE NULL END) AS average_income FROM people; 这条查询使用了3个聚合函数,分别是COUNT和AVG函数。在COUNT函数中,使用了CASE WHEN语句来统计年龄在18到25岁之间和在25到35岁之间的人数,而在AVG函数中,使用了CASE WHEN语句来计算年龄在这些范围内的人的平均收入。 2. CASE WHEN语句处理多个字段 有时,我们需要计算出多个字段在不同条件下的平均值、最大值或最小值。这时,CASE WHEN语句可以非常方便。例如,以下查询计算了一个表中每个人的总分、平均分和最高分: SELECT name, SUM(CASE WHEN subject = 'math' THEN score ELSE 0 END) AS math_total_score, SUM(CASE WHEN subject = 'math' THEN score ELSE 0 END) * 1.0 / SUM(CASE WHEN subject = 'math' THEN 1 ELSE 0 END) AS math_average_score, MAX(CASE WHEN subject = 'math' THEN score ELSE 0 END) AS math_max_score FROM scores GROUP BY name; 这个查询首先使用CASE WHEN语句将每个'数学'科目的得分相加,然后计算平均值和最大值。除此之外,还可以使用类似的方法对表中其他字段进行操作。
四、总结 CASE WHEN语句是SQL中一种非常重要的条件表达式。在实际情况中,我们可能需要根据某种规则对数据进行转换、分类、计算等操作。在这种情况下,可以使用CASE WHEN语句非常方便地完成这些操作。本文对CASE WHEN语句的基本语法结构及其在SQL查询中的应用进行了详细讲解,并举了一些具体的例子。相信读者通过本文的学习,对CASE WHEN的应用能够更加娴熟。 |
相关文章
热销商品
天2025冬季新款超好看泡芙面包服加厚保暖羽绒棉服女百搭小棉袄外套
2025冬季新款超好看泡芙面包服加厚保暖羽绒棉服女百搭小棉袄外套
¥115 领券购买
淘监狱看守所衣男劳改犯男装三层加厚加绒冬季保暖套装裤子外套棉袄
监狱看守所衣男劳改犯男装三层加厚加绒冬季保暖套装裤子外套棉袄
¥135 领券购买
天361儿童轮滑鞋女童溜冰鞋宝宝滑冰鞋男女生旱冰鞋专业初学者滑轮
361儿童轮滑鞋女童溜冰鞋宝宝滑冰鞋男女生旱冰鞋专业初学者滑轮
¥148 领券购买
天特步溜冰鞋成人儿童轮滑鞋大学生男童女童专业初学者旱冰滑轮滑冰
特步溜冰鞋成人儿童轮滑鞋大学生男童女童专业初学者旱冰滑轮滑冰
¥169 领券购买
天儿童轮滑鞋初学者溜冰鞋女童旱冰滑冰3-6-12岁女孩可调节大小滑轮
儿童轮滑鞋初学者溜冰鞋女童旱冰滑冰3-6-12岁女孩可调节大小滑轮
¥159 领券购买
天特步男女童初学者滑轮溜冰鞋专业成人轮滑鞋6到12岁旱冰鞋直排轮
特步男女童初学者滑轮溜冰鞋专业成人轮滑鞋6到12岁旱冰鞋直排轮
¥180 领券购买
天小状元溜冰鞋女童轮滑鞋儿童初学者3岁2小孩幼儿宝宝男双排滑冰鞋
小状元溜冰鞋女童轮滑鞋儿童初学者3岁2小孩幼儿宝宝男双排滑冰鞋
¥299 领券购买
天中粮长城经典四星赤霞珠单酿干红葡萄酒红酒6瓶正品
中粮长城经典四星赤霞珠单酿干红葡萄酒红酒6瓶正品
¥600 领券购买
天奥兰小红帽果香型西拉干红葡萄酒750ml*6瓶正品原瓶进口红酒
奥兰小红帽果香型西拉干红葡萄酒750ml*6瓶正品原瓶进口红酒
¥229 领券购买
天威龙92珍藏级干红解百纳葡萄酒赤霞珠蛇龙珠品丽珠红酒木盒单支
威龙92珍藏级干红解百纳葡萄酒赤霞珠蛇龙珠品丽珠红酒木盒单支
¥158 领券购买
天【商场同款】太平鸟男装休闲毛呢大衣宽松甄选羊毛大衣B1AAF4B07@
【商场同款】太平鸟男装休闲毛呢大衣宽松甄选羊毛大衣B1AAF4B07@
¥2375 领券购买
淘阿迪达斯GAZELLE INDOOR三叶草运动休闲耐磨板鞋 IG9979 IG6200
阿迪达斯GAZELLE INDOOR三叶草运动休闲耐磨板鞋 IG9979 IG6200
¥288 领券购买
天冰岛奥索Formfit ProAnkle专业脚腕护踝足球篮球护脚踝防崴脚踝套
冰岛奥索Formfit ProAnkle专业脚腕护踝足球篮球护脚踝防崴脚踝套
¥394 领券购买
天英国VG男士休闲商务领带礼盒装高档正装职业窄轻奢韩版新郎7cm
英国VG男士休闲商务领带礼盒装高档正装职业窄轻奢韩版新郎7cm
¥262 领券购买
淘新年穿戴甲猫眼格纹波点蝴蝶结款点钻鎏金分码30片红色蝴蝶结发财
新年穿戴甲猫眼格纹波点蝴蝶结款点钻鎏金分码30片红色蝴蝶结发财
¥5 领券购买
淘直灌式唇膏管2.8克白色高档大牌润唇膏口红外壳手工制作唇膏工具
直灌式唇膏管2.8克白色高档大牌润唇膏口红外壳手工制作唇膏工具
¥1.41 领券购买

