文档章节

mysql 横表和纵表转换

大喵哥
 大喵哥
发布于 2013/12/13 17:06
字数 421
阅读 314
收藏 3

(1)表tb1有如下数据:

姓名                     语文                        数学                    物理

张三                       68                           89                        99

李四                      90                            66                         78

现在要求写出查询语句得到如下查询结果

name                    subject                       score

张三                       语文                           68
张三                       数学                           89
张三                       物理                            99
李四                       语文                            90
李四                      数学                            66
李四                       物理                            78

sql语句如下:

select 姓名 as name,'语文' as subject,语文 as score from tb1
union
select 姓名 as name,'数学' as subject,数学 as score from tb1
union
select 姓名 as name,'物理' as subject,物理 as score from tb1
order by name



或者:

select * from(
select 姓名 as name,'语文' as subject,语文 as score from tb1
union
select 姓名 as name,'数学' as subject,数学 as score from tb1
union
select 姓名 as name,'物理' as subject,物理 as score from tb1
)tb
order by name



(2)tb2表有如下数据:

name              subject                  score

张三               语文                       74
张三                英语                      88
张三                物理                       90
李四                语文                      88
李四                英语                      67
李四                物理                        95

通过查询得到如下数据:

姓名         语文                  英语                     物理

张三          74                   88                        90
李四           88                    67                        95

sql语句如下:

select name as '姓名',
max(case subject when '语文' then score else 0 end) 语文,
        max(case subject when '英语' then score else 0 end) 英语,
        max(case subject when '物理' then score else 0 end)物理
from tb2
group by name



现在要求写出查询语句得到如下结果:

姓名         语文                  英语                     物理            总分                平均分

张三          74                    88                        90               252                    84
李四           88                    67                        95                250                    83.33

sql:

select name '姓名',
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '物理' then result else 0 end) 物理,
max(case subject when '英语' then result else 0 end)英语,
sum(result) as 总分,
avg(result) as 平均分
from tb
group by name



本文转载自:http://hi.baidu.com/devife/item/a56dac30f0977cd16d15e911

大喵哥
粉丝 13
博文 33
码字总数 1912
作品 0
广州
程序员
私信 提问
mysql横表和纵表以及互转实例

一.纵表 相关建表语句: CREATE TABLE ( int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', varchar(50) DEFAULT NULL COMMENT '姓名', varchar(50) DEFAULT NULL COMMENT '科目', double......

谢思华
2016/04/06
1K
0
Oracle 横表/纵表用场以及它们之间的相互转换

一、横表和纵表 横表:通常指我们平时在数据库中建立的表,是一种普通的建表方式。 (主键、字段1、字段2......)如:时间、客户ID,基本通话费、漫游通话费,国内长途费、国际长途费....。 ...

指尖的舞者
2012/08/05
0
0
数据库表为纵表时转变为横表的设计方法

一. 横表&纵表: 数据库表按照存储的数据结构不同区分为横表与纵表,通过如下数据的存储我们分别对横表与纵表进行简单介绍: 横表: http://www.finereport.com/forumimages/zjkbwzbszbwhb1...

finereport
2011/11/24
0
0
基于ESB实现商友与K3财务凭证集成

背景 沈阳XX商场推行O2O营销模式,信息化系统包括:线下零售系统、线上电商系统、网上支付系统,财务核算系统,为了实现线上线下系统互动、财务核算一体化,需要对各系统进行数据集成、系统对...

数通畅联
2014/12/10
0
0
数据库设计如何实现属性可配置化

http://www.iteye.com/problems/59252 比如有个Book表,有id, name, isbn等列表示基本信息,但是不同的商家对Book表有不同的其他需求,有的还需要A属性,有的则还需要B属性,或者说某一天随着...

长生门主
2017/06/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

idea下springboot 项目在static目录下添加文件不生效

idea下springboot 项目在static目录下添加文件不生效 问题描述 是这样子的,我的项目目录结构如下: 我在static目录下,创建了index.html和aaaa.jpg这两个文件。然后,启动服务访问 http://l...

wotrd
昨天
5
0
k8s1.14 一、环境

1. 4台虚拟机 (CentOS Linux release 7.2.1511 (Core) ) 192.168.130.211 master 192.168.130.212 node1 192.168.130.213 node2 192.168.130.214 node3 2. 设置服务器hostname 2.1 设置本机......

ThomasCheng
昨天
4
0
盖茨:如果我现在开创一家公司 将会专注于AI

新浪科技讯,北京时间 6 月 26 日凌晨消息,微软联合创始人比尔·盖茨(Bill Gates)在周一接受采访时表示,如果他今天从哈佛大学辍学并开创一家新公司,那么这家公司将会专注于人工智能(A...

linuxCool
昨天
1
0
聊聊feign的Retryer

序 本文主要研究一下feign的Retryer Retryer feign-core-10.2.3-sources.jar!/feign/Retryer.java public interface Retryer extends Cloneable { /** * if retry is permitted, retur......

go4it
昨天
12
0
HyperLogLog简介

  (1)HyperLogLog简介      在Redis 在 2.8.9 版本才添加了 HyperLogLog,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个...

SEOwhywhy
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部