为了账号安全,请及时绑定邮箱和手机立即绑定

想了解清楚每个词的意思,和这句语句的步骤,如先把什么抽出来,再怎么怎么,···那样···

想了解清楚每个词的意思,和这句语句的步骤,如先把什么抽出来,再怎么怎么,···那样···

芜湖不芜 2022-12-14 17:13:19
我明白下列两语句之不同,但不能理解.初学SQL2005 请教!select 课程,sum(case when 姓名='李四' then 成绩 end)as '李四',sum(case when 姓名='张三' then 成绩 end)as '张三'from table_2group by 课程select 姓名,sum(case when 课程='语文' then 成绩 end)as '语文',sum(case when 课程='数学' then 成绩 end)as '数学',sum(case when 课程='英语' then 成绩 end)as '英语'from table_2group by 姓名table_2是表名 姓名,课程,成绩是列名。)其他是对应列的数据希望可以帮我找到更多的知识。
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

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 '李四', 表示如果姓名为李四,则加总计算成绩,列名为‘李四’

类似的楼主可以自己理解了。

 


查看完整回答
反对 回复 2022-12-18
?
catspeake

TA贡献1111条经验 获得超0个赞

case的意思.就相等的程序中的if 也就是如果

case when 课程='语文' then 成绩 end

翻译就是..如果课程列的记录等于语文,那么就取此行成绩列的值.

本来是取课程的值..

查看完整回答
反对 回复 2022-12-18
  • 2 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信