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

2023-10-27

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

横表

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

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

纵表

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

缺点:数据描述不是很清晰,而且会造成数据库数据很多。另如果需要分组统计,要先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 s
group 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';

转换结果;
结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • INET6_ATON 的替代 MySQL 代码

    将旧的 INET ATON 值转换为新的二进制 INET6 ATON 值 无需 INET6 ATON INET6 NTOA 我们在表中已有数据 字段类型为UNSIGNED INT其中保存了使用以下命令创建的 IPv4 数据INET ATON
  • MySQL CREATE TABLE 语句上的外键错误(错误:150)

    我觉得我已经在一对非常简单的创建表语句上尝试了一切可能的方法 类型匹配 我尝试使用 ENGINE InnoDB 等 但很困惑为什么我收到外键错误 我已经离开 SQL 一段时间了 所以这可能是一个简单的问题 mysql gt CREATE T
  • 如何停止 CTE 中的递归?

    我有一个数据库表 如下所示 ID PredecessorID Data 43b1e103 d8c6 40f9 b031 e5d9ef18a739 null 55f6951b 5ed3 46c8 9ad5 64e496cb521a 43b1e
  • 使用 href 和 php 从 sql 数据库对 html 表进行排序

    我有一个 html 表 其中包含来自 php 吐出的 sql 表的产品数据 我想通过单击表列的标题对数据进行排序 我像这样输出我的表 php product list sql mysql query SELECT FROM products
  • 删除所有值比第二高值低 5 倍的记录

    我有一个表 价格 有两个字段 代码 字符 和价格 小数 我需要查找具有相同代码 价格比两个最高价格低 5 倍或更少的所有记录 例如 在这种情况下 我希望删除 id 1 id code price 1 1001 10 2 1001 101 3
  • Oracle 12 对 SQL 中的本地集合类型有问题吗?

    长话短说 我建议讨论下面看到的代码 运行时 Oracle 11 编译器引发 PLS 00306 调用 PIPE TABLE 时参数提示的数量或类型错误 PLS 00642 SQL 语句中不允许使用本地集合类型 Oracle 12编译下面的包
  • 单个 sql 查询可以处理 sql server 中的 null 或值日期范围

    使用 SQL Server 2008 我有一个存储过程 其中开始日期和结束日期作为日期范围的输入参数 寻找一个singlesql 查询 其中在 where 子句中有一个开始日期和结束日期 可以处理日期均为空或都有值的两种情况 我不想使用 I
  • 查询查找表中姓名和号码之间的重复项

    SELECT count lower name number FROM tbl GROUP BY lower name number HAVING count gt 1 输入表1 slno name number 1 aaa 111 2 A
  • SQL Server 2005 - 达到表行大小限制

    有没有一种干净的方法可以在向表添加新列之前确定表的行大小 并且不超过 8060 字节的限制 例如 如果表行长度当前为 8055 字节 并且我想添加日期时间 8 字节 则这将结束 因为它将变为 8063 字节 不包括空映射 但是 如果我添加一
  • Spring Boot如何加入自定义查询

    我需要创建一个端点 该端点按州返回人口普查数据以及城市列表 我目前使用两个端点来获取此数据 目前回应 自定义查询一 censusByState id 1 code 11 name Rond nia statePopulation 18152
  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • 使用 SQLite 创建列表树

    我正在尝试使用 PHP 和 SQLite 表设置创建一个分层列表 如下所示 itemid parentid name 1 null Item1 2 null Item2 3 1 Item3 4 1 Item4 5 2 Item5
  • SQL:列出多个连接语句中的重复记录?

    你好 以下查询在连接多个表后返回所有员工 select e from dbo EMP e join dbo HREMP a on a ID e ID join dbo LOGO c on c EMPID e id join dbo LOGO
  • 在调用存储过程 Sql Server 2008 时使用嵌套存储过程结果

    是否可以在另一个存储过程中使用一个存储过程的结果 I e CREATE PROCEDURE dbo Proc1 ID INT mfgID INT DealerID INT AS BEGIN DECLARE Proc1Result UserD
  • SQL 删除自动命名约束

    我使用脚本在表上创建了一些约束 但未指定约束名称 结果 我最终受到了像这样的限制FK DOC OBGS kntr 54E63309例如 是否可以在不指定确切的约束名称的情况下删除该约束 例如 类似这样的东西 不起作用 ALTER TABLE
  • 如何将数据插入 Microsoft Access 数据库?

    我正在尝试将数据插入 Microsoft Access 数据库 我将数据插入到 Access 数据库中 但只有第一次和第二次显示我插入的数据 当我重建应用程序时 我插入的数据消失了 我不知道他们去了哪里并且没有出现 我使用 C 和 NET
  • 当添加列较少时追加到现有 SQLite 表,而不将数据库读入 R

    是否有一些简单的方法 无论是在 SQL 端还是在 R 端 将 data frame 附加到具有更多列的现有表 缺失的列应该用 NA 填充 如果它能够优雅地处理比表 1 列数更多的表 2 那么会加分吗 library RSQLite Crea
  • 想要从字符格式转换为带小数的数字格式

    想要将字符格式 00001000000 转换为10000 00 请帮我 我已经尝试过 select to number 00012300 9999999999 99 nls numeric characters from dual 这个脚本
  • OVER ORDER BY 中的多个列

    有没有办法在 OVER ORDER BY 子句中指定多个列 SELECT ROW NUMBER OVER ORDER BY A Col1 AS ID FROM MyTable A 上面的方法工作正常 但尝试添加第二列不起作用 SELECT
  • 选择不带 FROM 但有多于一行的选择

    如何在不从现有表中进行选择的情况下生成 2 行 2 列的表 我正在寻找的是一个返回的选择语句 e g id value 1 103 2 556 Use UNION http dev mysql com doc refman 5 0 en u

随机推荐

  • Revit二次开发——选集

    选集 选集 用户选集 过滤的用户选集 选集 选择图元后运行外部命令获取选择的内容 Revit API中定义了单选 多选 框选等方式的用户选集 用户可以十分方便的使用鼠标和键盘完成这三种方式的图元选择 Revit API根据三种用户选集各自的
  • 设系统中有三种类型的资源(A,B,C)的五个进程(P1,P2,P3,P4,P5)。A资源的数量为17,B资源的数量为5,C资源的数量为20。在T0时刻系统状态如表所示。

    银行算法应用 题目 设系统中有三种类型的资源 A B C 的五个进程 P1 P2 P3 P4 P5 A资源的数量为17 B资源的数量为5 C资源的数量为20 在T0时刻系统状态如表所示 系统采用银行家算法实施死锁避免策略 试问 1 T0时刻
  • centos7启动服务uthorization not available. Check if polkit service is running or see debug message for

    事件经过 有一次远程帮助别人解决的一个问题 当时那个人给发了一个samba服务启动报错的截图 还有一个翻译图 报错信息中提到了一个polkit服务 下面先普及一下关于这个服务的知识 polkit是一个应用程序级别的工具集 通过定义和审核权限
  • 浅析存储引擎(3)-B-tree

    浅析日志结构的存储引擎 1 bitcask浅析日志结构的存储引擎 2 SSTable和LSM Tree 前面两篇文章介绍了比较好理解的日志结构引擎LSM Tree 但它们不是最常见的索引类型 目前最广泛使用的索引结构是B tree B tr
  • input函数和int函数的使用

    第一 input函数接受一个标准输入数据 返回str类型 第二 int函数可以把str强制转换为整形 第三 int input ps 最近搞深度学习的视频 但是依然需要实操
  • 2023华为OD机试真题-寻找关键钥匙(JAVA、Python、C++)

    题目描述 小强正在参加 密室逃生 游戏 当前关卡要求找到符合给定 密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为1 N 每个箱子中都有一个字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成 需要在这些字符串
  • Webview setLayoutAlgorithm

    表示这个东西还是不用的为好 前端工程师会为自己的弹出框设置好位置 不必要手机端再来做弹出框的设置 要不就直接弹出原生弹出框 第一种 java WebSettings settings webView getSettings settings
  • TenSEAL学习笔记二

    文章目录 Training and Evaluation of Logistic Regression on Encrypted Data Download the coronary heart disease dataset Initia
  • 华为机试(JAVA)真题Od【A卷+B卷】2023

    目录 华为OD机试是什么 华为OD面试流程 华为OD机试通过率高吗 华为OD薪资待遇 华为OD晋升空间 大家好 我是哪吒 本专栏包含了最新最全的华为OD机试真题 有详细的分析和Java代码解答 已帮助1000 同学顺利通过OD机考 发现新题
  • gdb+gdbserver远程调试

    gdb gdbserver远程调试 文章目录 gdb gdbserver远程调试 一 gdb gdbserver交叉编译 1 源码下载 2 编译gdb 3 交叉编译gdbserver 二 远程使用gdbserver 1 attach调试运行
  • 为什么闹钟设置了却不响_手机闹钟不响是怎么回事 怎么设置闹钟【图文】

    手机大家都比较了解吧 手机由之前的来款式手机发展到了现在的4G大屏手机 这就是时代进步的见证 手机有很多的功能 但是今天小编给大家介绍的这个功能虽说不是什么 高科 技的功能 但是它确实最实用的 尤其是对于我们这些每天工作或者学习的人来说 这
  • Microsoft Visual C++下载,VC++下载

    Microsoft Visual C 2019 v14 28 29617 Microsoft Visual C Redistributable 系统运行库 简称MSVC VB VC 是Windows操作系统应用程序的基础类型库组件 Micr
  • Nginx反向代理proxy_pass

    一 概述 代理 proxy 即中间人 它代替客户端发送请求给服务器 收到响应后再转给客户端 通常意义上的代理是从用户的角度讲的 用户通过某个代理可以访问多个网站 这个代理是靠近用户的 比如某些公司可能需要限制员工所访问的网站 就会在网络出口
  • MySQL-多表查询

    一 表架构 student sid sname sage ssex 学生表 course cid cname tid 课程表 sc sid cid score 成绩表 teacher tid tname 教师表 二 建表sql语句 SET
  • STM32 进阶教程 1 - micropython 移植

    原文 https blog csdn net zhanglifu3601881 article details 91997528 前言 Python是一种解释型 面向对象 动态数据类型的高级程序设计语言 Python 是一个高层次的结合了解
  • 11.AOP之注解配置

    1 使用IDEA创建工程 2 引入项目使用的依赖
  • Spring静态注入

    原文链接 http blog csdn net chen1403876161 article details 53644024 spring静态注入的三种方式 说明 MongoFileOperationUtil是自己封装的一个Mongodb
  • [Synth 8-2543] port connections cannot be mixed ordered and named

    我也遇到了这个问题 卡了半天 刚自己解决了 给再发生这种状况的盆友们一点参考 Jakes uut clk clk we we T T cos1 cos1 sin1 sin1 cos2 cos2 sin2 sin2 cos3 cos3 sin
  • MII/MDIO接口详解

    本文主要分析MII RMII SMII 以及GMII RGMII SGMII接口的信号定义 及相关知识 同时本文也对RJ 45接口进行了总结 分析了在10 100模式下和1000M模式下的设计方法 MII接口提供了MAC与PHY之间 PHY
  • 纵表和横表的相互转换与自我理解

    纵表和横表的相互转换与自我理解 横表 纵表 结论 纵表转横表 横表转纵表 横表 优点 一行表示了一个实体记录 清晰可见 一目了然 缺点 如果现在要给这个表加一个字段 那么就必须重建表结构 纵表 优点 如果现在要给这个表加一个字段 只需要添加