MySQL行转列与列转行(实现过程)

2023-11-07

最近工作用到了好几次列转行,做个小总结。顺道也总结一下行转列

 

行转列:

转换之前的表格,第三、四列分别为特征和数值

图1

 
首先看第一次的执行sql:

select
 id , name ,
 (case 特征 when '年龄' then 数值 else 0 end) as age,
 (case 特征 when '身高' then 数值 else 0 end) as height,
 (case 特征 when '体重' then 数值 else 0 end) as weight
from user2

 
第一次的执行sql效果:

图2

 
行转列关键点一
1、首先行转列的第一个关键点是用到了case when then else end , 查询出的图2新的表格3、4、5列(age、height、weight)是根据图1的表格第3列特征那列的三种情况(身高、体重、年龄)来当作列名的,然后再取别名as ageas heightas weight。此时新表格的列已定好,行数还未发生改变,呈现图二这种情况

 
再来看一下第二次的执行sql:

select
 id , name ,
 max(case 特征 when '年龄' then 数值 else 0 end) as age,
 max(case 特征 when '身高' then 数值 else 0 end) as height,
 max(case 特征 when '体重' then 数值 else 0 end) as weight
from user2
 group by name

 
第二次的执行sql效果:

图3

 
行转列关键点二
2、相比于第一次sql,第二次sql多了group bymax,这也是行转列的第二个关键点,将数据进行分组,再取每列的最大值。小明在图2中是三条数据,通过max取每列的最大使得三条数据合并为一条数据,至此出现图3这种我们需要的效果
 
 
注意:
1、行转列时需要转换的行中的值不可为非数字,否则影响max()的使用

 
 

列转行:

转换之前的表格,第三、四、五列分别为age、height、weight

图4

 
执行sql:

select id , name , '年龄' as 特征 , age as 数值 from user
 union
  select id , name , '身高' as 特征 , height as 数值 from user
   union 
    select id , name , '体重' as 特征 , weight as 数值 from user
     order by id

 
执行sql之后的效果

图5

 
相对于行转列,列转行就显得更简单一些,只用到了一个union

列转行关键点:
union,使用'年龄' as 特征、'身高' as 特征、'体重' as 特征 来确定图5第3列的列名与每行数据该列的值,使用age as 数值、height as 数值、weight as 数值来确定图5第4列的列名与每行数据该列的值,3个select 查询出3张表格,再通过union连接成一张表格

union注意点
使用union连接表时需要注意表的字段一致,此处我们3个select 查询出3张表格字段是一致的。

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

MySQL行转列与列转行(实现过程) 的相关文章

  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 如何使用 SQL Server 2008 将行复制到同一个表中

    A 到目前为止我的方式 sqlCommand CommandText INSERT Table1 column1 column2 column3 SELECT column1 column2 column3 FROM Table1 WHER
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 通过触发器应用表的列权限

    现在 我有一个名为 Members 的表 其中包含内容 分为联系人数据 银行数据 现在 管理员应该能够创建 更新 删除用户 这些用户保存在另一个表中 该表只能访问管理员 用户应该获得自己的 mysql 用户帐户 管理员还应该能够设置权限 例
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 如何通过SQL查询检查是否有JSON函数?

    有SQL 2016 中的 JSON 函数 https learn microsoft com en us sql t sql functions json functions transact sql例如 JSON VALUE JSON Q
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • Java之集合(15个demo)

    本节主要介绍java的集合 主要包括List Set和Map 其中List的子类ArrayList和LinkedList Set的子类HashSet和TreeSet Map的字类HashMap等 介绍了集合的常用方法 Collections
  • 面试必备之Java 最常见 200+ 面试题全解析

    这篇文章主要介绍了面试必备之Java 最常见 200 面试题全解析 老王觉得挺不错的 现在分享给大家 也给大家做个参考 给准备面试的大家 特别总结了 Java 程序员面试必备的面试题库 共含208道面试题 涵盖十九个模块 从 Java 基础
  • List中移除指定元素

    例一 想在list中删除元素 先看下面的这一段代码 public class App2 public static void main String args List
  • opencv图像处理(加法运算)

    加法运算 import os import re import cv2 cv2 imshow image img 显示 cv2 waitKey 10000 停留 cv2 destroyAllWindows 关闭 from PIL impor
  • 大数据-Linux的常用命令

    一 Linux的目录结构 1 标黄的是我们一般常用的 其他的作为了解就好 2 Linux的命令有很多 我只挑了一些和大数据相关的写一下 命令格式 command options parameter 说明 command 命令名 相应功能的英
  • android四大组件(详细总结)

    Android四大组件分别为activity service content provider broadcast receiver 一 android四大组件详解 1 activity 1 一个Activity通常就是一个单独的屏幕 窗口
  • springboot mybaties Invalid bound statement (not found) 错误

    错误信息 org apache catalina connector RequestFacade 5151cc1f org apache ibatis binding BindingException Invalid bound state
  • No module named ‘rospy‘

    1 rospkg未安装 pip install rospkg 或 conda install rospkg 2 rospkg已安装 参考 为pycharm设置搜索路径 sunshine drizzle的博客 CSDN博客 以下适用于 pyc
  • 补码的除法运算

    补码的除法运算是将两个数都使用补码的形式来进行计算 和原码的除法相比 补码的除法运算中被除数 除数以及余数都采用双符号位的形式参与计算 最后得到的余数符号位就代表着最终结果的符号位 加减交替法 题目 假设机器字长为5位 x 0 1000 y
  • C++类中的三大函数(构造,析构,拷贝)

    下面一段话与大家共勉 每个人的一生都会遇到很多边界 有些边界可以突破 有些则不能 那些无法突破的边界就是你的极限 而划分边界的标准就是 阈值 每次突破阈值之后 人生轨迹就会发生剧烈变化 其间需要你做出很多思考和判断 直到最后找到自己的极限
  • 类模板特例化

    参考来源 C primer 中文版第5版 P626 1 举个例子 为标准库hash模板定义一个特例化版本 可以用它来将Sales data对象保存在无序容器中 默认情况下 无序容器使用hash
  • Rancher持续集成部署K8S集群的脚本

    文章目录 1 概要 2 安装 2 1 Rancher CLI安装 2 2 kubectl 安装 3 Rancher CLI 配置API Key 3 1 添加API key 3 2 测试API key 3 3 配置部署镜像的脚本 3 3 1
  • gcc常用命令的使用

    一 简介 gcc提供了30多条警告信息和3个警告级别 使用它们有助于增强程序的稳定性和可移植性 此外 gcc还对标准的C和C 语言进行了大量的扩展 提高了程序的执行效率 有助于编译器进行代码优化 能够减轻编程的工作量 二 gcc常用的编译选
  • 高性能MySQL实战(一):表结构

    最近因需求改动新增了一些数据库表 但是在定义表结构时 具体列属性的选择有些不知其所以然 索引的添加也有遗漏和不规范的地方 所以我打算为创建一个高性能表的过程以实战的形式写一个专题 以此来学习和巩固这些知识 一 实战 我使用的 MySQL 版
  • 计算机外部设备IO接口

    计算机外部设备IO接口 常见接口 术语 常见接口 接口 特点 USB 通用串行总线 Universal Serial Bus 高速率 热插拔 雏菊链 最新版本 USB 4 SCSI 小型计算机系统接口 Small Computer Syst
  • rocketmq安装、启动

    1 下载 gt wget http mirror bit edu cn apache rocketmq 4 4 0 rocketmq all 4 4 0 source release zip gt unzip rocketmq all 4
  • 做一个合格的开发,从玩转Apipost开始

    前言 也是有一段时间没更文了 最近忙于跟生活对线 今天给大家带来的是一个宝贝 Apipost 这东西做啥用 这东西做啥用 这东西做啥用 这东西做啥用 在了解这个apipost的作用之前 先听我说 谢谢你因为有你 温暖了四季 身为后端研发的我
  • 全栈之前端

    关注回复 学习交流群 加入 安全开发运维 答疑交流群 原文连接 全栈之前端 2 CSS3基础知识之选择器学习本章将主要介绍CSS选择器类型 id 类 属性伪类和伪元素及关系选择器 它是CSS规则的第一部分 常常用于元素和其他部分组合起来告诉
  • 弹球小游戏

    创建loginBall类实现开始游戏界面 package 弹球小游戏 import javax swing import java awt public class loginBall JFrame JF new JFrame 弹球小游戏
  • MySQL行转列与列转行(实现过程)

    最近工作用到了好几次列转行 做个小总结 顺道也总结一下行转列 行转列 转换之前的表格 第三 四列分别为特征和数值 图1 首先看第一次的执行sql select id name case 特征 when 年龄 then 数值 else 0 e