2. SQL中的透视表 (枢纽表、pivot table)

这篇具有很好参考价值的文章主要介绍了2. SQL中的透视表 (枢纽表、pivot table)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQL中的透视表 (枢纽表、pivot table)

定义

枢纽表(英语:pivot table)也翻译成透视表,是用来汇总其它表的数据。首先把源表分组(grouping),然后对各组内数据做汇总操作如排序、平均、累加、计数或字符串连接等。透视表用于数据处理,在数据可视化程序如电子表格或商业智能软件中常见。

举例:

  1. 一张表包含一列数;透视表仅含一行一列为源表该列的均值。
  2. 源表有两列分别为 “性别“ 与 “身高” ,表的每行给出一个人的性别与高度;透视表有两行两列,在 “性别” 列分别写 “男性” 与 “女性” ,在 “身高” 列分别写对应性别的平均身高。
案例实现
案例1:

写一个查询语句实现对大洲(continent)列的 透视表 操作,使得每个学生按照姓名的字母顺序依次排列在对应的大洲下面。输出的标题应依次为美洲(America)、亚洲(Asia)和欧洲(Europe)。

-- 源数据
with student as (
    select 'Jack' as name, 'America' as continent
    union all
    select 'Pascal' as name, 'Europe' as continent
    union all
    select 'Xi' as name, 'Asia' as continent
    union all
    select 'Jane' as name, 'America' as continent
)

-- 查询 源表数据
-- select * from student;

--    输出结果
-- name    continent
-- Jack		America
-- Xi		Asia
-- Pascal	Europe
-- Jane		America

--  查询语句
-- 使用max() 是因为 group之后需要使用聚合函数
select max(if(continent = 'America', name, null)) America,
       max(if(continent = 'Asia', name, null))    Asia,
       max(if(continent = 'Europe', name, null))  Europe
from (select *, row_number() over (partition by continent order by name) rk
      from student) t
group by rk;

--    输出结果
-- america     asia    europe
-- Jack        Xi      Pascal
-- Jane        NUll    NULL
案例2:
-- 实际工作当中遇到这样一个问题,数据如下。我想通过SQL将数据转换成按列展示的形式,即常用的pivot透视操作。

-- # 原始数据
-- id item value
-- 2,   b,  21
-- 1,   b,  15
-- 2,   a,  20
-- 1,   a,  10

-- # 次级目标格式(SQL)
-- id     item     Value
-- 2,   item-a,     20
-- 2,   item-b,     21
-- 1,   item-a,     10
-- 1,   item-b,     15

-- # 目标格式
-- id  item_a  item_b
-- 1,   10,     15
-- 2,   20,     21
-- 查询 源表数据
-- select * from test;

--    输出结果
-- id   item    value
-- 1     b      15
-- 2     b      21
-- 1     a      10
-- 2     a      20

--  查询语句

-- 2)目标格式
select id,
       max(if(item_col = 'item-a', value, null)) as item_a,
       max(if(item_col = 'item-b', value, null)) as item_b
from (
        -- 1) 次级目标格式(SQL)
         select id,
                concat('item-', item) as item_col,
                value
         from test
     ) t1
group by id;
学习链接

维基百科 - 透视表

hive-sql中透视表的实现

Hive当中实现pivot操作文章来源地址https://www.toymoban.com/news/detail-543636.html

到了这里,关于2. SQL中的透视表 (枢纽表、pivot table)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript 数据透视表 DHTMLX Pivot Crack

    DHTMLX Pivot JavaScript 数据透视表 - 强大的数据汇总和报告 使用我们的高速 JavaScript/HTML5 Pivot 组件可视化您的复杂数据,从而提高您的商业智能。 它可以帮助您以方便的方式汇总大型数据集。 主要特征 纯 JavaScript 库,可轻松与任何服务器端集成 无第三方依赖 5 个步骤,你就可

    2024年02月08日
    浏览(39)
  • 数据库优化:探索 SQL 中的索引

    推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 在一本书中搜索特定主题时,我们将首先访问索引页面(该页面位于该书的开头),并找到包含我们感兴趣的主题的页码。现在,想象一下在没有索引页的书中找到特定主题是多么不方便。为此,我们必须搜索书中

    2024年02月14日
    浏览(66)
  • 数据库中的SQL是如何执行的?

    参考文献:03丨学会用数据库的方式思考SQL是如何执行的 以oracle和MySQL为例,讲解了sql是怎么被执行的,并且对比了执行过程中,oracle和MySQL的异同。 个人感觉,讲解的核心是SQL执行时的缓存机制。 自我口述一下 sql语句在提交后, 首先进行“语法检查”,检查sql语法是否正

    2024年02月09日
    浏览(47)
  • MySQL数据库中的索引(含SQL语句)

    假设有一张表,表中有100万条数据,这100万条数据在硬盘上是存储在数据页上的,一页数据大小为16k。存储100万条数据那么就需要数据页,假设其中有一条数据是“id为7900”的,那么如果要查询这条数据,其中SQL是SELECT * FROM 表名 WHERE id = 7900。在执行这条SQL语句的时候,MyS

    2024年02月02日
    浏览(75)
  • 【手写数据库toadb】SQL解析器的实现架构,create table/insert 多values语句的解析树生成流程和输出结构分析

    ​ 专栏内容 : 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学

    2024年02月05日
    浏览(64)
  • MySQL数据库干货_16—— SQL99标准中的查询

    SQL99标准中的查询 MySQL5.7 支持部分的SQL99 标准。 SQL99中的交叉连接(CROSS JOIN) 示例: 使用交叉连接查询 employees 表与 departments 表。 SQL99中的自然连接(NATURAL JOIN) 自然连接 连接只能发生在两个表中有相同名字和数据类型的列上。如果列有相同的名字,但数据类型不同,NATURAL J

    2024年02月06日
    浏览(61)
  • DevExpress WinForms Pivot Grid组件,一个类似Excel的数据透视表控件(二)

    界面控件DevExpress WinForms的Pivot Grid组件是一个类似Excel的数据透视表控件,用于多维(OLAP)数据分析和跨选项卡报表。在上文中(点击这里回顾)我们介绍了DevExpress WinForms Pivot Grid组件的性能、分析服务、数据塑造能力等,本文将继续介绍该组件的其他功能,欢迎持续关注我们哦

    2024年02月04日
    浏览(54)
  • 通过sql语句查询出某个字段在数据库中的某个表

    新入职的小伙伴,肯定还没熟悉数据库中表于表的关系以及表中的字段的含义是什么,就需要进行需求开发,导致会出现对某个字段在哪张表里面都分辨不清,不过不要怕,可以利用已下sql语句快速找到。(要注意的是,此方法可能不适用于所有类型的数据库系统,但对于大

    2024年02月16日
    浏览(72)
  • 基于Linux操作系统中的MySQL数据库SQL语句(三十一)

    MySQL数据库SQL语句 目录 一、SQL语句类型 1、DDL 2、DML 3、DCL 4、DQL 二、数据库操作 1、查看 2、创建 2.1、默认字符集 2.2、指定字符集 3、进入  4、删除 5、更改 6、练习 三、数据表操作 (一)数据类型 1、数值类型 1.1、TINYINT 1.2、SMALLINT 1.3、INT 1.4、BIGINT 1.5、FLOAT(M,D) 2、时间

    2024年02月15日
    浏览(63)
  • 什么是T-SQL编程?T-SQL是Transact-SQL的缩写,是一种扩展了SQL(结构化查询语言)的编程语言,用于Microsoft SQL Server数据库管理系统中的数据管理和操作。T-

    什么是T-SQL编程? T-SQL是Transact-SQL的缩写,是一种 扩展了SQL(结构化查询语言) 的编程语言,用于Microsoft SQL Server数据库管理系统中的数据管理和操作。T-SQL支持创建 存储过程、触发器、函数 等高级特性,能够更加灵活地进行数据操作和处理。基本的T-SQL语法与标准SQL很相

    2024年01月21日
    浏览(94)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包