SQL中的数据转换-行转列
这个课程将会教你如何从格式化数据中提取分析用的数据,并转换成展示用或图表用格式。我们将使用下面的数据库:
将它变成像下面这样的:
在这个例子中,我们将使用在CASE lesson中使用的同样的数据库--College Football。你可以直接在这里查看数据。像在inner join lesson中第一个例子,让我们先聚合展示在每个联盟中各个年级运动员的数量:
在MODE中查看结果
为了转换数据,我们需要把上面的查询放入一个子查询中。在开始转换前,创建子查询并选取所有列是有帮助的。像这样在增加的步骤里重跑查询,如果查询不能运行,debug会更容易些。你可以在子查询中去除ORDER BY子句因为我们将在外部查询中重排序结果。
假设上面查询像预想中那样运行(结果跟第一个查询记过一模一样),是时候将结果中不同年级值转换成列。在SELECT表达式中的每一项将创建一个列,所以你必须为每一个年级创建一个单独的列:
技术上,你已经完成了教程上目标。但是可以变得更好一点。你注意到一点,上面的查询产生了以Conference列进行字母排序的列表。增加一列“total players”并以它排序(从大到小)也许会更加完整:
:
SQL中的数据转换-列转行
网上很多你发现的数据的格式都是为了观察用的,分析不适用。拿这个例子来说,这个表展示了2000-2012年间世界范围内发生地震的数量:
用这个格式的数据要回答“一个地震的平均震级是多少?”是困难的。如果数据被分成3列展示:“magnitude”,“year”,“number of earthquakes",将会容易的多。下面是怎样将数据转换成那样的格式:
首先,在Mode中观察原始数据:
注:列名以“year_”开头,是因为Mode要求列名以字母开头。
需要做的第一件事就是创建一个表,列出原始表格的全部列,作为新表中的行。除非你有很多列需要转换,最简单的方式通常就是在一个子查询中列出所有的列:
一旦你获得这些值,你可以通过交叉匹配worldwide_earthquakes表去创建一个扩展视图:
观察,worldwide_earthquake表中的每一行被重复了13次。最后的要做的事情就是使用case表达式修正这个问题,使用case表达式根据year列的值从worldwide_earthquakes表中正确的列中拉取数据。
到此这篇sql文件转换成csv(sql文件转json)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sqlbc/19317.html