【摘要】
本文介绍间接用 SQL 查问文件数据的各种状况,并用 esProc SPL 举例实现。请点击在文件上应用 SQL 查问的示例理解详情
在数据分析业务中常常要解决数据文件。咱们晓得,对于数据库中的数据,应用SQL来查问是十分方便快捷的,所以很容易想到把文件数据先导入到数据库再用SQL来查问。然而文件数据导入数据库自身也是很繁琐的工作,那么有没有间接对数据文件应用SQL查问的方法呢?本文将介绍这样的方法,列举出用 SQL 查问文件数据的各种状况,并提供用 esProc SPL 编写的代码示例。esProc 是业余的数据计算引擎,SPL 中提供了欠缺的用 SQL 查问文件数据的办法。
本文用文本文件举例,但同时也实用于Excel文件。
1. 过滤
应用SQL从文本文件中筛选满足条件的记录。
示例:从学生成绩表Students_scores.txt中筛选出10班的学生问题,文件中第一行是列名,第二行开始是数据,如下图所示。
2. 汇总
应用SQL对文本文件中的数据进行汇总。
示例:计算学生成绩表中全体学生的语文平均分、数学最高分、英语总分。
3. 跨列计算
应用SQL对文本文件中的数据进行跨列计算。
示例:计算学生成绩表中每位学生的总分。
A1中后果如下,减少了一个新的计算列total_score:
4. CASE语句
在SQL中能够应用CASE语句进行简单条件计算。
示例:计算学生成绩表中每位同学的英语问题是否及格。
A1中后果如下,减少了一个新的计算列English_evaluation:
5. 排序
应用SQL对文本文件中的数据进行升/降序排序。
示例:将学生成绩表依照班号升序、总分降序的顺序排列。
6. TOP-N
应用SQL对文本文件中的数据求TOP-N。
示例:查看英语问题最高的3个同学问题。
7. 分组汇总
应用SQL对文本文件中的数据进行分组汇总。
示例:查问各班的英语最低分、语文最高分、数学总分。
8. 分组后过滤
应用SQL对文本文件中的数据分组汇总后再过滤。
示例:找出英语平均分低于70分的班级。
A1中查问后果如下:
9. 去重
应用SQL对文本文件中的数据进行去重查问。
示例:查问所有班级编号。
10. 去重计数
应用SQL对文本文件中的数据进行去重计数。
示例:在产品数据文件中,统计共有多少种不同产品。文件局部数据如下所示:
11. 分组去重计数
应用SQL分组对文本文件中的数据分组后进行去重计数。
示例:依据产品销售数据文件,统计每个产品有销售记录的天数。
12. 两个文件关联查问
应用SQL对两个文本文件中的数据进行关联查问。
示例:产品信息和销售信息别离存储在两个文本文件中,计算每次销售数量小于10的产品的总销售额。两个文件数据结构如下图:
13. 多个文件关联查问
应用SQL对多个文本文件中的数据进行关联查问。
示例:州信息,部门信息和员工信息别离存储在3个文本文件中,查问California州的HR部门的员工。
14. 多个文件多级关联查问
应用SQL对多个文本文件中的数据进行多级关联查问。
示例:州信息,部门信息和员工信息别离存储在3个文本文件中,查问经理在California州的New York州员工。
15. 嵌套子查问
反对简单SQL作为子查问。
示例:员工信息和部门信息别离存储在2个文本文件中,找出部门经理最年老的部门。文件局部数据如下图所示:
16. 专用表表达式
应用SQL的with子句对文本文件中的数据进行计算。
示例:从部门数据文件中找出指定部门HR、R&D、Sales,再计算这几个部门女员工人数和平均工资。数据文件同上例。
《SPL CookBook》中还有更多麻利计算示例。