码迷,mamicode.com
首页 > 数据库 > 详细

数据库复习总结(16)-case关键字(数据透视)

时间:2018-01-02 21:20:32      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:eve   onclick   gpo   结果   event   统计   color   none   case语法   

case语法:

技术分享图片

练习1:将性别的0、1显示为男、女

技术分享图片
select * from  StudentInfo
--case:对结果集中的列进行判断
--例1:显示学生信息,性别以"男女"显示:
select *,
    case sGender 
    when 1 then 
    when 0 then  end as 性别
from StudentInfo
View Code

结果:

技术分享图片

练习2:显示成绩为“优、良、中、差”

技术分享图片
--例2:将学生分数显示成等级 >=90 优,>=80 良,>=60 中,其它 差
select *,
    case
    when scoreValue>=60 and scoreValue<80 then 
    when scoreValue>=90 then 
    when scoreValue>=80 then 
    else  end as 等级
from ScoreInfo
View Code

技术分享图片

练习3:统计学生的语文、数学、英语的成绩(视图、聚合函数)

技术分享图片
--查询学生姓名、科目名称、成绩(构建视图)
--行转列(数据透视)
    --统计学生的语文、数学、英语的成绩
create view Student_Score
as
select stu.sName,sub.sTitle,score.scoreValue
from ScoreInfo score
inner join SubjectInfo sub on sub.sId=score.subId
inner join StudentInfo stu on stu.sId=score.stuId

select * from Student_Score   --查询视图

例子
--姓名 语文 数学 英语
--小笼包 100  89  92.5

--数据透视(行转列,列转行)
select sName 姓名,
--如果当前的STitle的值是"语文",则输出ScoreValue
case sTitle when 语文 then scoreValue end 语文,
case when sTitle=数学 then scoreValue end 数学,
case sTitle when 英语 then scoreValue end 英语
from Student_Score

select sName 姓名,
--如果当前的STitle的值是"语文",则输出ScoreValue
--多行合并成一行(聚合函数)
max(case sTitle when 语文 then scoreValue end) 语文,
min(case when sTitle=数学 then scoreValue end) 数学,
sum(case sTitle when 英语 then scoreValue end) 英语
 from Student_Score
 group by sName
View Code

技术分享图片

练习:数据透视

技术分享图片
 --班级  男生  女生
--    青龙     1      2
--1、创建视图
create view Student_Class_Gender
as
select cTitle,sGender,COUNT(*) as count1
from StudentInfo stu
inner join ClassInfo class on stu.cid=class.cId
group by cTitle,sGender

select * from Student_Class_Gender
--2、转换
--转换
--数据透视(行转列)
select cTitle,
case sGender when 1 then count1 else 0 end 男,
case when sGender=0 then count1 else 0 endfrom Student_Class_Gender

--3、合并
select cTitle,
max(case sGender when 1 then count1 else 0 end) 男,
max(case when sGender=0 then count1 else 0 end) 女
from Student_Class_Gender
group by cTitle
View Code

技术分享图片

 

数据库复习总结(16)-case关键字(数据透视)

标签:eve   onclick   gpo   结果   event   统计   color   none   case语法   

原文地址:https://www.cnblogs.com/mhq-martin/p/8178739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!