在 MySQL 中将数据从长格式重塑为宽格式
在 MySQL 中,数据通常以长格式或高格式存储,其中多个属性对于同一实体存储在单独的行中。然而,出于分析和报告的目的,使用宽格式的数据会更方便,其中每行代表一个实体,每列代表一个属性。
MySQL 可以用来转换长格式数据吗没有外部脚本的宽格式?是的,可以使用 MySQL 强大的数据透视表功能。
创建宽表
获取键列表: 使用查询检索长格式表中存在的所有不同键例如:
SELECT DISTINCT key FROM table;
填写表值
使用交叉表查询来填充宽表中的值。以下查询演示了这一点:
SELECT country, MAX(IF(key='President', value, NULL)) AS President, MAX(IF(key='Currency', value, NULL)) AS Currency, ... -- Add other key-value pairs as needed FROM table GROUP BY country;
此查询检查长表中的每一行,并仅返回该国家/地区每个键值对的最新值。带有 IF 条件的 MAX 函数可确保保留最新值。
例如,问题中提供的输入数据将转换为以下宽范围格式:
输入:
country | attrName | attrValue | key |
---|---|---|---|
US | President | Obama | 2 |
US | Currency | Dollar | 3 |
China | President | Hu | 4 |
China | Currency | Yuan | 5 |
输出:
country | President | Currency |
---|---|---|
US | Obama | Dollar |
China | Hu | Yuan |
结论
使用MySQL数据透视表,重塑很简单数据从长格式变为宽格式,使其更适合分析和报告。这种方法效率很高,可以应用于具有任意数量属性的表。
以上是MySQL 可以在不使用外部脚本的情况下将长格式数据转换为宽格式数据吗?的详细内容。更多信息请关注PHP中文网其他相关文章!