数据库复习总结(16)-case关键字(数据透视)
case语法:
练习1:将性别的0、1显示为男、女
select * from StudentInfo
--case:对结果集中的列进行判断
--例1:显示学生信息,性别以"男女"显示:
select *,
case sGender
when 1 then '男'
when 0 then '女' end as 性别
from StudentInfo
结果:
练习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
练习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
练习:数据透视
--班级 男生 女生
-- 青龙 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 end 女
from 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
数据库复习总结(16)-case关键字(数据透视)的更多相关文章
- 数据透视表sql:用SQL行列转换实现数据透视的一些思考
用SQL行列转换实现数据透视的一些思考 摘要:根据对报表开发过程中碰到的需要用SQL行列转换进行解决的一类查询统计问题的分析,逐步探索求解得到一种较通用的解决思路,并用函数进行实现.该解决思路及函数实 ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- delphi 控制 EXCEL 数据透视表
虽说报表多又难做,做报表相当容易. 做报表也可以偷懒的,超级实用又省事.只需要做一个报表,这个报表里面包括几乎所有的数据字段,然后将查询到的数据导出到 excel中,利用excel自带的“数据透视”功 ...
- sql语句复习(基础-提升-技巧-经典数据开发案例-sql server配置)
1 基础 1.说明:创建数据库 CREATE DATABASE database-name charset=utf8 2.说明:删除数据库 drop database dbname 3.说明:备份sq ...
- Excel数据透视表的日常应用技巧
对工作表中数据进行统计是经常需要的.一般情况我们都是使用菜单命令或函数来进行数据的统计的.可是如果要统计的工作表中记录很多,而且需要统计的项目也很多时,使用这种方法就显得力不从心了.请问还有什么更好的 ...
- T-SQL——数据透视和逆透视
目录 0. 测试数据集及说明 0.1 准备测试数据 0.2 对一维表和二维表理解 1. 透视转换 1.1 使用标准SQL进行数据透视 1.2 使用T-SQL中pivot函数进行数据透视 1.3 关于 ...
- SQL pivot 基本用法 行列转换 数据透视
SQL通过pivot进行行列转换 数据透视 可直接在sql server 运行 传统操作 和 pivot create table XKCl (name nchar(10) not null, 学科 ...
- VSTO学习笔记(十四)Excel数据透视表与PowerPivot
原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...
- Django之路:模型(数据库)和自定义Field以及数据表的更改
一.Django 模型(数据库) Django模型是与数据库相关的,与数据库相关的代码一般写在models.py中,Django支持sqlite3,MySQL,PostgreSQL等数据库,只需要在s ...
随机推荐
- 鸟哥的linux私房菜学习-(五)补充:重点回顾
为了避免瞬间断电造成的Linux系统危害,建议做为服务器的Linux主机应该加上不断电系统来持续提供稳定的电力: 默认的图形模式登陆中,可以选择语系以及作业阶段.作业阶段为多种窗口管理员软件所提供,如 ...
- dubbo源码—dubbo简介
dubbo是一个RPC框架,应用方像使用本地service一样使用dubbo service.dubbo体系架构 上图中的角色: 最重要的是consumer.registry和provider con ...
- Python day 7(1) 模块
一:模块 1 在Python中,一个.py文件就称之为一个模块(Module) 2 Python的好处,优点: a 提高了代码的可维护性 b 当一个模块编写完毕,就可以被其他地方引用.我们在编写程 ...
- 从开源项目看python代码注释
最近看了不少代码,也写了不少代码,所以在看和写之间发现了很多的问题,真的是很多,至少从我的认识来看,有几个地方有很大的改进空间,这里不准备把所有的问题都列举出来,所以就先挑选一个比较明显得来和大家聊聊 ...
- Ubuntu 16.04 升级 PHP 版本至 7.1
安装swoole扩展,怎么安装到7.0下去了,我本来编译的版本是7.19版本,但是没吃 升级步骤 $ sudo add-apt-repository ppa:ondrej/php $ sudo apt ...
- angular4.0路由传递参数、获取参数最nice的写法
研究ng4的官网,终于找到了我想要的方法.我想要的结果是用'&'拼接参数传送,这样阅读上是最好的.否则很多'/'的拼接,容易混淆参数和组件名称.一般我们页面跳转传递参数都是这样的格式:http ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- Java多线程窥探
1.程序,进程,线程 标准定义:
- ASP.NET 设计模式:设计模式和原则简述
设计模式的概念 设计模式是高层次的.抽象的解决方案模板.可以将这些模式视为解决方案的蓝本而不是解决方案本身.通常是通过重构自己的代码并将问题泛化来实现设计模式. 软件设计中常见的模式大体分为三类: 创 ...
- I/O模型详细解析
内核空间和用户空间:由于操作系统都包括内核空间和用户空间(或者说内核态和用户态),内核空间主要存放的是内核代码和数据,是供系统进程使用的空间.而用户空间主要存放的是用户代码和数据,是供用户进程使用的空 ...