简介
数据通常有多种格式,有时,有必要将其从一种格式转换为另一种格式。一种常见的转换是从窄/高格式到宽格式,其中窄表中的多列变成宽表中的多行。本文探讨了如何在 MySQL 中实现这种转换。
创建宽表结构
要创建宽格式表,首先从窄表中识别所有唯一键桌子。这可以使用以下查询来实现:
select distinct key from table;
此查询的结果将提供窄表中所有唯一键的列表。这些键将成为宽格式表的列名称。例如,如果不同的键是 ['President', 'Currency'],则宽格式表将具有以下结构:
country, President, Currency
填充宽表数据
要填充宽格式表的值,请使用带有聚合函数(例如 MAX() 或GROUP_CONCAT():
SELECT country, MAX( IF( key='President', value, NULL ) ) AS President, MAX( IF( key='Currency', value, NULL ) ) AS Currency FROM table GROUP BY country;
在此示例中,MAX() 聚合函数用于检索每个国家/地区内每个键的最大值。此查询将产生以下结果:
country, President, Currency US, Obama, Dollar China, Hu, Yuan
替代方法:交叉表或数据透视表
创建宽格式表的另一种方法是使用交叉表或数据透视表。这可以使用 MySQL 的 PIVOT 运算符等工具来实现,它允许您指定要使用的列和聚合函数。
结论
从狭窄的范围重塑数据使用 SQL 聚合函数或交叉表/数据透视表可以在 MySQL 中轻松实现宽格式。当使用图表和图形等数据可视化工具时,这种转换特别有用。
以上是如何使用 SQL 将 MySQL 数据从窄格式重塑为宽格式?的详细内容。更多信息请关注PHP中文网其他相关文章!