SQL中的Case语句怎么用
这篇文章主要介绍了SQL中的Case语句怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
SQL Case 语句语法语法中有很多东西,但它仍然相当直观:关键字CASE表示 case 语句的开始,关键字END表示它的结束。
然后对于单个条件,您可以编写关键字,WHEN后跟必须满足的条件。之后是THEN该条件的关键字和值,例如WHEN <condition> THEN <stuff>.
然后可以跟其他WHEN/THEN语句。
最后,如果ELSE关键字的所有条件都不为真,您可以添加一个默认使用的值,如下所示。
CASEWHENcondition1THENstuffWHENcondition2THENotherstuff...ELSEdefaultstuffEND
让我们把它付诸实践以更好地理解它。
SQL Case 语句示例让我们CASE在示例中使用该语句。我们有一个表格,上面列出了学生及其考试成绩。我们需要给每个学生打分,我们可以使用case语句自动完成。
我们可以使用该CASE语句给每个学生一个成绩,我们将在名为 的新列中添加该成绩grade。
让我们先写下CASE陈述,我们将在其中写出每个年级的细目分类。当score为 94 或更高时,该行的值为A。如果分数为 90 或更高,则值为A-,依此类推。
CASEWHENscore>=94THEN"A"WHENscore>=90THEN"A-"WHENscore>=87THEN"B+"WHENscore>=83THEN"B"WHENscore>=80THEN"B-"WHENscore>=77THEN"C+"WHENscore>=73THEN"C"WHENscore>=70THEN"C-"WHENscore>=67THEN"D+"WHENscore>=60THEN"D"ELSE"F"END
编写CASE语句后,我们将把它添加到查询中。然后我们将grade使用AS关键字为列命名:
SELECT*,CASEWHENscore>=94THEN"A"WHENscore>=90THEN"A-"WHENscore>=87THEN"B+"WHENscore>=83THEN"B"WHENscore>=80THEN"B-"WHENscore>=77THEN"C+"WHENscore>=73THEN"C"WHENscore>=70THEN"C-"WHENscore>=67THEN"D+"WHENscore>=60THEN"D"ELSE"F"ENDASgradeFROMstudents_grades;
我们从这个查询中得到的表格如下所示——现在每个学生都有一个基于他们的分数的成绩。
我们还可以根据需要使用除 case 语句之外的其他语句以不同方式操作表。
案例陈述示例 1例如,我们可以使用ORDER BY对行进行排序以将最高分排在最前面。
SELECTname,CASEWHENscore>=94THEN"A"WHENscore>=90THEN"A-"WHENscore>=87THEN"B+"WHENscore>=83THEN"B"WHENscore>=80THEN"B-"WHENscore>=77THEN"C+"WHENscore>=73THEN"C"WHENscore>=70THEN"C-"WHENscore>=67THEN"D+"WHENscore>=60THEN"D"ELSE"F"ENDASgradeFROMstudents_gradesORDERBYscoreDESC;
我们根据score哪个是数字而不是grade列进行排序,因为字母顺序与基于值的等级顺序不同。我们使用DESC关键字以降序呈现它,最高值在顶部。
我们得到的表格如下所示:
让我们对这些数据做一些分析。我们可以使用GROUP BY并COUNT计算每个年级收到多少学生。
SELECTCASEWHENscore>=94THEN"A"WHENscore>=90THEN"A-"WHENscore>=87THEN"B+"WHENscore>=83THEN"B"WHENscore>=80THEN"B-"WHENscore>=77THEN"C+"WHENscore>=73THEN"C"WHENscore>=70THEN"C-"WHENscore>=67THEN"D+"WHENscore>=60THEN"D"ELSE"F"ENDASgrade,COUNT(*)ASnumber_of_studentsFROMstudents_gradesGROUPBYgradeORDERBYscoreDESC;
我们使用ORDER BY从高到低的顺序对等级进行排序,我们使用score它是一个数值(因为按grade列排序将使用字母顺序,这与按等级的值排序不同)。
让我们对这些数据做一些不同的分析。我们可以使用GROUP BYandCOUNT和一个不同的 case 语句来计算有多少学生通过了考试。然后我们可以使用ORDER BY我们喜欢的顺序排列列,通过顶部的学生人数。
SELECTCASEWHENscore>=60THEN"passed"ELSE"failed"ENDASresult,COUNT(*)ASnumber_of_studentsFROMstudents_gradesGROUPBYresultORDERBYresultDESC;
我们得到的表格如下所示。班级的表现还不错,22 名学生中有 18 名学生通过了成绩——但其他 4 名学生可能需要一些帮助。
感谢你能够认真阅读完这篇文章,希望小编分享的“SQL中的Case语句怎么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。