博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
纵表和横表的相互转换与自我理解
阅读量:3961 次
发布时间:2019-05-24

本文共 919 字,大约阅读时间需要 3 分钟。

纵表和横表的相互转换与自我理解

横表

优点:一行表示了一个实体记录,清晰可见,一目了然。

缺点:如果现在要给这个表加一个字段,那么就必须重建表结构

纵表

优点:如果现在要给这个表加一个字段,只需要添加一些记录。

缺点:数据描述不是很清晰,而且会造成数据库数据很多。另如果需要分组统计,要先group by,较繁琐。

结论

应该把不容易改动表结构的设计成横表,把容易经常改动不确定的表结构设计成纵表

纵表转横表

先有纵表student(学生表),字段名就比较直观化

纵表源数据
怎么把他变成我们想要的横表呢
横表
下面就是SQL语句

select s.`name` '姓名',SUM(case s.kemu when '语文' then s.chengji else 0 end) as '语文',SUM(case s.kemu when '数学' then s.chengji else 0 end) as '数学',SUM(case s.kemu when '英语' then s.chengji else 0 end) as '英语'from student sgroup by s.`name`;

这个是最直观的,也是特别简介易懂的.

SUM(case s.kemu when ‘语文’ then s.chengji else 0 end) as ‘语文’

单独进行一个个成绩的处理.取科目为’语文’的值其他取0进行求和

这里SUM也可以换成其他函数来结合需求处理比如MAX,MIN等等…

横表转纵表

先有横表student(学生表),字段名就比较直观化

横表
怎么把他变成我们想要的纵表呢

select  s.姓名,s.语文 as 'chengji','语文' as 'kemu'from student s union all  select  s.姓名,s.数学 as 'chengji','数学' as 'kemu'from student s union all  select  s.姓名,s.英语 as 'chengji','英语' as 'kemu'from student s order by s.姓名, 'kemu';

转换结果;

结果

转载地址:http://ybezi.baihongyu.com/

你可能感兴趣的文章
Selenium-webdriver系列教程(7)———如何处理alert和confirm
查看>>
Selenium-webdriver系列教程(8)———使用Page Object设计模式
查看>>
Python logging模块详解
查看>>
加载selenium2Library失败---robotframework环境搭建(RIDE无法启动?)
查看>>
Robot Framework 的安装配置和简单的实例介绍
查看>>
APP功能测试的7大注意点
查看>>
Python之unittest
查看>>
Fiddler之——Fiddler简介
查看>>
Fiddler之——Fiddler抓包分析
查看>>
Android开发之——activity跳转
查看>>
Android开发之——Menu 操作
查看>>
Android开发之——布局实例
查看>>
Android开发之——SQLite使用方法
查看>>
Python之SMTP发送邮件
查看>>
手动测试无法被取代的理由
查看>>
浅析移动测试:应用上线不“裸奔”的正确方式
查看>>
Robot Framework之元素定位
查看>>
性能测试方案之性能测试术语解释
查看>>
性能测试方案之性能测试方法
查看>>
测试方法之单元测试
查看>>