sql函数查询语句解析(求详解SQL的CASE函数语句含义)

本文目录
求详解SQL的CASE函数语句含义
select 课程,
sum(case when 姓名=’李四’ then 成绩 end)as ’李四’,
sum(case when 姓名=’张三’ then 成绩 end)as ’张三’
from table_2
group by 课程
--意思是:
查询结果按照“课程”、“李四的成绩”、“张三的成绩”显示出来,
其中“李四的成绩”计算方法是:
当姓名=李四,那么就计算将该行的成绩按照课程进行分类加总
“张三的成绩”计算方法是:
当姓名=张三,那么就计算将该行的成绩按照课程进行分类加总
select 姓名,
sum(case when 课程=’语文’ then 成绩 end)as ’语文’,
sum(case when 课程=’数学’ then 成绩 end)as ’数学’,
sum(case when 课程=’英语’ then 成绩 end)as ’英语’
from table_2
group by 姓名
--类似的意思是:
查询结果按照“姓名”、“语文”、“数学”、“英语”按照姓名进行加总各科成绩显示出来,
其中“语文”成绩计算方法是:
当科目=语文,那么就计算将该行的成绩按照姓名进行分类加总
“数学”成绩计算方法是:
当科目=数学,那么就计算将该行的成绩按照姓名进行分类加总
“英语”成绩计算方法是:
当科目=英语,那么就计算将该行的成绩按照姓名进行分类加总
case when 条件 then 表达式1 else 表达式2 end
表示:当条件成立,则返回表达式1,否则返回表达式2.
因此:sum(case when 姓名=’李四’ then 成绩 end)as ’李四’, 表示如果姓名为李四,则加总计算成绩,列名为‘李四’
类似的楼主可以自己理解了。
SQL SERVER查询时间是一年中第几周的函数
SQL SERVER查询时间是一年中第几周,使用函数 datepart()。
例:查询 ‘2017-1-1’是2017年的第几周,语句如下
select datepart(wk,’2017-1-1’)
datepart函数说明
一、函数功能:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
二、语法:DATEPART(datepart,date)
三、参数说明:date 参数是合法的日期表达式。datepart 参数可以是下列的值:
四、实例演示
假设我们有下面这个 "Orders" 表:
我们使用如下 SELECT 语句:
SELECT DATEPART(yyyy,OrderDate) AS OrderYear,
DATEPART(mm,OrderDate) AS OrderMonth,
DATEPART(dd,OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1
结果:
一文讲懂SQL子查询
大家好,我是宁一。
今天讲解SQL教程第18课:子查询。
SQL语句可以嵌套,最常见的就是查询语句的嵌套。
基本语法:
我们一般称外面嵌套的语句为主查询,里面被嵌套的语句为子查询,有时也会叫外查询、内查询,大家知道意思就好。
子查询要用括号括起来。子查询不仅可以放在WHERE的后面,还可以放在SELECT、FROM的后面,我们一个个来讲解。
1、子查询+WHERE子句
SQL执行时,会先执行括号内的子查询,子查询最常与WHERE子句结合使用。子查询的结果作为WHERE子句的筛选条件,完成更复杂的数据检索。
实例: 在Students表中,找出所有在"宁一"后面出生的学生。
实例解析: 需要先确定"宁一"的生日,再将生日作为WHERE筛选条件,得到最终数据。
第一步:找到"宁一"的生日
第二步:将生日作为WHERE筛选条件,得到最终数据,子查询语句要用括号括起来。
SELECT语句的子查询经常与聚合函数结合使用。因为我们使用聚合函数的时候,记录会合成一条,其它数据细节就不能显示了。
比如: 我们想要查看学生表中所有的学生姓名、学生生日、学生的最大生日。
示例结果:
错误写法:
像上面这样写是会报错的,因为聚合函数与其他表中的列(Sname,Sage),同时放在SELECT的后面。需要用GROUP BY语句将这些表中的列(Sname,Sage)分组。
上面的语句后面加上 GROUP BY Sname,Sage 就可以了。
但是这样写,会将每组的数据聚合成1条数据,比如每组有3条数据,使用聚合函数MAX()+GROUP BY,最终每组只会显示1条最大值的数据。
我们需要展现Students表中所有的学生,这样写不能满足我们的需求。
正确写法: 结合子查询来实现。
子查询与FROM子句结合使用,子查询结果被当成了一个“表”,可以用SELECT语句做进一步的筛查。
比如:我们先写一个SELECT查询语句
将上面的查询语句放在FROM的后面,则上面查询到的结果,就会被当成一个“表”。
这里有一个特别要注意的地方,放在FROM后面的子查询,必须要加别名。
复杂的子查询再嵌套进 FROM 里会让整个查询看起来过于复杂,我们一般会将子查询结果储存为视图,然后再直接使用视图作为来源表,视图会SQL高阶课程中详细讲解。
其实子查询就是查询语句嵌套,没有什么新的东西,只是多了一个层级,由内向外地一层层梳理就会很清楚了。
作业: 结合Students表,从Teachers表中找出当班主任的老师(通过子查询实现)。
作业解析: 先从Students表中,找出所有班主任的Tid并去重,将查询结果作为筛选条件,放在WHERE语句中。

更多文章:
jquery sortable(jquery sortable怎么支持多个一起拖拽)
2026年8月28日 14:00
数组大小计算公式(关于EXCEL里数组比较大小 然后分别赋值的公式)
2025年6月18日 08:30
addeventlistener()(window.addeventlistener怎么用)
2026年5月21日 20:00
display在java中什么意思(javascript中 visibility和display的区别)
2025年10月10日 06:30
web of science怎么看全文(如何在web of science 上检索一个学者的全部文章)
2025年12月22日 01:15
soil的翻译(英语单选提问:soil 与earth 的区别)
2026年1月16日 17:15
8086汇编语言中的DIV指令溢出问题(回答的好会加分)?汇编里面,进位一定溢出吗
2026年2月5日 09:15
readfile共享读写(MFC如何读取文件到内存,再写到磁盘)
2026年6月6日 02:45
datetime库的time引用(python中如何把datetime.datetime转换成datetime.time)
2025年10月5日 10:45
long int类型占几个字节(【C语言】关于int、long所占字节数问题的讨论万分感谢!)
2025年11月24日 21:00







![grep使用正则表达式(正则表达式:grep “^[[:space :]]*$” 表示什么)](/static/images/nopic/9.jpg)




