程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MySQL,将数据从长/高重塑到宽大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决MySQL,将数据从长/高重塑到宽?

开发过程中遇到MySQL,将数据从长/高重塑到宽的问题如何解决?下面主要结合日常开发的经验,给出你关于MySQL,将数据从长/高重塑到宽的解决方法建议,希望对你解决MySQL,将数据从长/高重塑到宽有所启发或帮助;

交叉表或数据透视表就是答案。从那里可以选择SELECT FROM … INSERT INTO …或从单个SELECT创建一个VIEW。

就像是:

SELECT country, 
       MAX( IF( key='PresIDent', value, NulL ) ) AS PresIDent,
       MAX( IF( key='Currency', value, NulL ) ) AS Currency,
       ...

FROM table 
GROUP BY country;
有关更多信息:http
//dev.mysql.com/tech- resources/articles/wizard/index.HTML

解决方法

我在mysql表中的数据具有长/高格式(如下所述),并希望将其转换为宽格式。我可以只使用sql吗?

用一个例子最容易解释。假设您具有有关M个国家/地区,N个键(例如,键可以是收入,政治领导人,地区,大洲等)的(国家/地区,键,值)信息。

Long format has 3 columns: country,key,value
  - M*N rows.
  e.g. 
  'USA','President','Obama'
   ...
  'USA','Currency','Dollar'

Wide format has N=16 columns: county,key1,...,keyN
  - M rows
example: 
   country,President,Currency
   'USA','Obama','Dollar'

SQL中是否可以使用宽格式的数据来创建新表?

select distinct key from table;

//这将为我获取所有键。

1)然后如何使用这些关键元素创建表?

2)然后如何填写表格值?

我很确定我可以使用任何脚本语言(我喜欢python)来做到这一点,但想知道在mysql中是否有一种简便的方法。由于经常使用该命令,因此许多统计软件包(例如R和STATA)都内置了此命令。

======

更清楚地说,这是简单情况下所需的输入输出:

输入:

country    attrName    attrValue     key  (these are column names)
US         President   Obama         2
US         Currency    Dollar        3
China      President   Hu            4
China      Currency    Yuan          5

输出量

country    President    Currency    newPkey
US         Obama        Dollar      1
China      Hu           Yuan        2

大佬总结

以上是大佬教程为你收集整理的MySQL,将数据从长/高重塑到宽全部内容,希望文章能够帮你解决MySQL,将数据从长/高重塑到宽所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: