iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >在doris中实现行转列操作的三种方式及列转行的实现
  • 200
分享到

在doris中实现行转列操作的三种方式及列转行的实现

数据库mysql 2023-09-14 10:09:36 200人浏览 八月长安
摘要

本文演示使用sql进行列转行的操作和列转行 一、行转列 创建表 drop table score_1;CREATE TABLE IF NOT EXISTS score_1(    `user_id` BIGINT NOT NULL

本文演示使用sql进行列转行的操作和列转行

一、行转列

创建表

drop table score_1;CREATE TABLE IF NOT EXISTS score_1(    `user_id` BIGINT NOT NULL COMMENT "user_id",    `subject` VARCHAR(255) NOT NULL COMMENT "学科",    `score` BIGINT  NOT NULL DEFAULT '0' COMMENT "分数")DUPLICATE KEY(`user_id`,`subject`,`score`)DISTRIBUTED BY HASH(`user_id`) BUCKETS 1PROPERTIES ("replication_allocation" = "tag.location.default: 1");desc  score_1;



 插入数据

 insert  into `score_1`(`user_id`,`subject`,`score`) values (1,'MATH',90),(1,'ENGLISH',98),(1,'CHINESE',85),(2,'MATH',87),(2,'ENGLISH',78),(2,'CHINESE',89), (3,'MATH',90),(3,'ENGLISH',98),(3,'CHINESE',85),(4,'MATH',87),(4,'ENGLISH',78),(4,'CHINESE',89);

行转列的三种方式
1、uNIOn all

select user_id,SUM(MATH) AS 'MATH',SUM(ENGLISH) AS 'ENGLISH',SUM(CHINESE)AS CHINESE from ((SELECT user_id,score AS 'MATH',0 AS 'ENGLISH',0 AS 'CHINESE' FROM score_1 WHERE subject = 'MATH')UNION ALL(SELECT user_id,0 AS 'MATH',score AS 'ENGLISH',0 AS 'CHINESE' FROM score_1 WHERE subject = 'ENGLISH')UNION ALL(SELECT user_id,0 AS 'MATH',0 AS 'ENGLISH',score AS 'CHINESE' FROM score_1 WHERE subject = 'CHINESE')) tGROUP BY user_id


2、join

SELECT t1.user_id, t1.MATH, t2.score AS 'ENGLISH',t3.score AS 'CHINESE' FROM    ( SELECT user_id, score AS 'MATH' FROM score_1 WHERE subject = 'MATH' ) AS t1    JOIN ( SELECT user_id, score FROM score_1 WHERE subject = 'ENGLISH' ) AS t2 ON t1.user_id = t2.user_id    JOIN ( SELECT user_id, score FROM score_1 WHERE subject = 'CHINESE' ) AS t3 ON t1.user_id = t3.user_id


3、sum group

    SELECT user_id,        sum(if(subject='MATH', score, NULL)) as `MATH`,        sum(if(subject='ENGLISH', score, NULL)) as `ENGLISH`,       sum(if(subject='CHINESE', score, NULL)) as `CHINESE`FROM score_1 GROUP BY user_id

二、列转行

drop table score_2;CREATE TABLE IF NOT EXISTS score_2(    `user_id` BIGINT NOT NULL COMMENT "user_id",    `math_score` BIGINT NOT NULL COMMENT "数学分数",    `en_score` BIGINT NOT NULL COMMENT "英语分数",    `cn_score` BIGINT NOT NULL COMMENT "语文分数")UNIQUE KEY(`user_id`)DISTRIBUTED BY HASH(`user_id`) BUCKETS 1PROPERTIES ("replication_allocation" = "tag.location.default: 1");INSERT INTO score_2(user_id,cn_score,math_score,en_score) VALUES (1,90,92,80),(2,91,91,82),(3,97,81,86),(4,66,87,68),(5,86,89,78),(6,85,82,45);select * from score_2;select user_id,'语文' as subject,cn_score as score from score_2unionselect user_id,'英语' as subject,en_score as score from score_2union select user_id,'数学' as subject,math_score as score from score_2;

来源地址:https://blog.csdn.net/rjbcxhc/article/details/128854546

您可能感兴趣的文档:

--结束END--

本文标题: 在doris中实现行转列操作的三种方式及列转行的实现

本文链接: https://www.lsjlt.com/news/407063.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在doris中实现行转列操作的三种方式及列转行的实现
    本文演示使用sql进行列转行的操作和列转行 一、行转列 创建表 drop table score_1;CREATE TABLE IF NOT EXISTS score_1(    `user_id` BIGINT NOT NULL...
    99+
    2023-09-14
    数据库 mysql
  • Hive行转列的实现方式
    本篇内容主要讲解“Hive行转列的实现方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hive行转列的实现方式”吧!前言传统关系型数据库中,无论是Oracle(11g之后)还是SQLserve...
    99+
    2023-06-19
  • 怎么在SQL中实现行转列和列转行
    怎么在SQL中实现行转列和列转行?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。行列转换就是如下图所示两种展示形式的互相转换行转列假如我们有...
    99+
    2024-04-02
  • MySQL中怎么实现行转列操作
    本篇文章给大家分享的是有关MySQL中怎么实现行转列操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  表的基本结构  改造前表结构:  C...
    99+
    2024-04-02
  • SQLServer中怎么实现行列互转操作
    本篇文章为大家展示了SQLServer中怎么实现行列互转操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。pivot 的语法为:table_sourcepivot(...
    99+
    2024-04-02
  • mysql中怎么实现行列转换操作
    这篇文章将为大家详细讲解有关mysql中怎么实现行列转换操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。create table tx(id int pr...
    99+
    2024-04-02
  • mysql实现行转列的方法
    这篇文章主要介绍mysql实现行转列的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql实现行转列的方法:1、用cross join的方式实现,代码为【cross join...
    99+
    2024-04-02
  • mysql行转列的实现方式有哪些
    MySQL行转列的实现方式有以下几种: 使用CASE语句:通过使用CASE语句可以根据条件将行数据转换为列数据。 SELEC&#...
    99+
    2024-04-09
    mysql
  • Pandas.DataFrame行和列的转置的实现
    目录pandas.DataFrame.Tpandas.DataFrame.transpose()修改原始对象本身当进行类型转换(广播)时视图和复制如果要交换(转置)pandas.Da...
    99+
    2023-02-22
    Pandas DataFrame行列转置 Pandas.DataFrame行列交换
  • SQL四种方法实现行列转换超详细
    前言 大家好,我是楚生辉,在未来的日子里我们一起来学习大数据SQL相关的技术,一起努力奋斗,遇见更好的自己! 本文详细的介绍了多个方法实现列转行,行转列,并提供了案例的材料,有需要的小伙伴可以自行获取与学习~ 数据准备 CREAT...
    99+
    2023-08-18
    sql 数据库 mysql
  • sql实现列转行的方法是什么
    在SQL中,可以使用UNPIVOT操作符来实现列转行的功能。UNPIVOT操作符可以将多个列转换为行,将多个列的值转换为行的值,并将...
    99+
    2024-04-15
    sql
  • C#DataGridView行列转换的具体实现
    目录初始表格 需要进行行列转置 转换后的效果 实现代码如下 void InitTable() { var dataTable = new...
    99+
    2023-02-07
    C# DataGridView行列转换 C#datagridview行列
  • Excel中怎么实现动态行转列
    这篇文章将为大家详细讲解有关Excel中怎么实现动态行转列,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。查询的SQL如下<ol start="...
    99+
    2024-04-02
  • 实现 Java 平台的三种方式(转)
    实现 Java 平台的三种方式(转)[@more@]实现 Java 平台的三种方式广泛地说,只要能执行 Java bytecode 者,就可以称为 Java 平台(Java platform)。大致上,实现 Java 平台的方式有三种,分别...
    99+
    2023-06-03
  • Python3列表删除的三种方式实现
    目录1. 删除列表(list)的三种方式(1).按照元素删除—remove()(2).按照索引删除—pop()(3).按照索引删除—del()2....
    99+
    2024-04-02
  • mysql5中怎么在使用过程实现行转列
    本篇内容主要讲解“mysql5中怎么在使用过程实现行转列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql5中怎么在使用过程实现行转列”吧!简单到网上搜了...
    99+
    2024-04-02
  • SqlServer中实现行数据转为列显示
    目录1、效果如下2、解决方案3、代码如下场景:行数据的某列值想作为字段列显示 1、效果如下 2、解决方案 使用pivot进行行转列,以及结合分组 3、代码如下 select...
    99+
    2024-04-02
  • 详解Java实现JSONArray转Map的三种实现方式
    目录 第一种第二种 第三种 本文只是自己常用的三种,自己总结一下,不是只有这三种,杠精走开; JSONArray数据 [ { "...
    99+
    2024-04-02
  • SQL中如何实现行转列Pivot函数
    这篇文章将为大家详细讲解有关SQL中如何实现行转列Pivot函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先来创建一个DailyIncome 表create ...
    99+
    2024-04-02
  • 怎么在SQL中使用Unpivot函数实现列转行
    本篇文章为大家展示了怎么在SQL中使用Unpivot函数实现列转行,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。创建数据 CREATE TABL...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作