SQL 有序计算

2020-11-28
阅读 7 分钟
1.2k
使用过 SQL 的朋友对计算字段都不会陌生,比如 firstname+lastname,year(birthday),这些计算字段属于行内计算,不管表达式里用到的是单个字段,还是多个字段,使用的数据都在当前记录行内。有行内计算,对应的也就有跨行计算,如:第一名和第二名的差距;从 1 月到当前月份累计的销售额。按照成绩有序,才会有第一名、...

SQL 的后计算脚本

2020-11-19
阅读 6 分钟
1.1k
SQL 的后计算脚本用于实现 SQL 不适合的某些复杂运算,本文从此类工具中精心挑选了三种,从开发效率、语法表达能力、结构化函数库等方面进行深度对比,考察了各脚本在集合计算、有序计算等重点运算上的表现,esProc 在这几款工具中的表现最为出色。点击SQL 的后计算脚本了解详情。

在文件上使用 SQL 查询的示例

2020-11-16
阅读 4 分钟
779
在数据分析业务中经常要处理数据文件。我们知道,对于数据库中的数据,使用SQL来查询是非常方便快捷的,所以很容易想到把文件数据先导入到数据库再用SQL来查询。但是文件数据导入数据库本身也是很繁琐的工作,那么有没有直接对数据文件使用SQL查询的办法呢?本文将介绍这样的办法,列举出用 SQL 查询文件数据的各种情况...

集算器优化 SQL 示例汇总

2019-12-24
阅读 1 分钟
869
更新于 20191216 优化 SQL 难点解决:直观分组 示例详解:对位分组、枚举分组 难点解决:序列生成 整数序列、日期序列、工作日序列、序列转表 难点解决:集合及行号 和集、差集、交集、用位置求集合、用条件求位置、最值位置、有序对位计算 难点解决:记录的引用 一次取数后反复引用结果集能大幅提升报表性能 难点解决:...

SPL 简化 SQL 案例详解:竖排多层数据

2019-12-05
阅读 2 分钟
1k
此类需求常见于为报表整理数据,对于SQL来说,属于比较复杂的计算。因为SQL缺少有序集合的机制,需要对分组和明细分别设置用于排序的计算列,再将分组和明细合并,最后做排序。为了实现这种算法,SQL往往要用非ansi标准的特殊函数去实现,代码比较难写,也不易理解。如果需要对层级更多的分组进行拼凑,将更加难以实现。

SPL教案——连接

2019-10-21
阅读 6 分钟
750
SPL 连接.pptx

结构化文本计算示例(二)

2019-10-21
阅读 5 分钟
991
上一节讲述了结构化文本的一些基本运算,本节继续用案例讲述二目运算和综合运算。 二目运算 集合运算(文件比较) 现有文件f1.txt和f2.txt,第一行是列名,需要对文件中的Name字段进行交集运算。部分数据如下: 文件f1.txt: 文件f2.txt: 代码如下: 函数isect用于集合间的交集运算,A1.(Name)表示取出A1的Name列,形成一...

结构化文本计算示例(一)

2019-10-21
阅读 4 分钟
1.1k
结构化文本是很常见的文件格式,对结构化文本的计算也是很常见的需求。在实现这种计算时,一种很容易想到的办法是将文件导入数据库后再计算,但这会消耗大量时间以及昂贵的数据库资源,而且有的场合下并没有合适的数据库可用。这样一来,我们就会有一个自然的想法,如果能够直接计算就会方便多了。可惜的是,一般高级语...

SPL 简化 SQL 案例详解:固定分组

2019-09-19
阅读 5 分钟
920
在数据库应用开发中,我们经常需要面对复杂的SQL式计算,固定分组就是其中一种。固定分组的分组依据不在待分组的数据中,而是来自于外部,比如另一张表、外部参数、条件列表等。对于特定类型的固定分组,用SQL实现还算简单(比如:分组依据来自另一张表,且对分组次序没有要求),但对于比较通用、灵活的要求,实现起来...

SPL 简化 SQL 案例详解:组内运算

2019-09-19
阅读 3 分钟
862
在开发数据库应用时,经常在分组后需要对组内数据进行计算,例如:列出近3年每年都发表过论文的学生名单(按论文发表年分组后列出每年都出现的学生清单),统计全部参加了历次培训的员工(按培训分组后统计每次都有的员工人数),选出每位客户的高尔夫成绩最高的三天(按客户分组后按天计算成绩的Top3)等等。

SPL 简化 SQL 案例详解:行间计算

2019-09-11
阅读 3 分钟
810
在数据库应用开发中,我们经常需要面对复杂的SQL计算,行间计算就是其中一种。比如:用每月的销售额除以上月的销售额,求比上期,或用每月销售额除以去年同月的销售额,求同期比。有些数据库系统没有提供SQL2003标准的窗口函数,或者支持得不完备,那么完成行间计算就需要改变思路,使用连接(join)运算替代,不仅难以...

SPL 简化 SQL 案例详解:计算各组前 N 行

2019-09-11
阅读 2 分钟
663
取出各组的前N行数据是较常见的运算,比如:每个月每种产品销量最高的五天是哪五天,每位员工涨薪最多的一次是哪次,高尔夫会员成绩最差的三次是哪三次,等等。在SQL中,这类运算要用窗口函数以及keep/top/rownumber等高级技巧来间接处理,代码难度较大。而且许多数据库(如MySQL)还没有这些高级功能,就只能用更复杂的...

SQL 难点解决:循环计算

2019-08-27
阅读 6 分钟
792
SQL 虽然可以对集合中的记录进行循环计算, 但在循环计算过程中利用中间变量、同时计算多个值、前后记录访问、减少循环次数等方面差强人意。而集算器 SPL 则要直观许多,可以按自然思维习惯写出运算。这里对 SQL 和集算器 SPL 在循环计算方面进行了对比,如果需要了解更多,请前往乾学院:SQL 难点解决:循环计算!

详谈转置 pivot

2019-08-09
阅读 5 分钟
998
在日常工作中时常会遇到将数据表的行列进行转换的问题。SQL 提供了静态转置的功能 pivot 和 unpivot,但适用范围很受限,要用 SQL 实现一些比较复杂的转置功能常常会遇到语句过于复杂的问题,而且缺少一个标准的解决思路。而集算器的 SPL 语言,则因其语法的灵活和函数库的丰富,可以完美地弥补 SQL 在这方面的不足。

SPL 简化 SQL 案例详解:分组关联

2019-07-23
阅读 4 分钟
726
在数据库应用开发中,我们经常需要面对复杂的SQL式计算,比如多层分组中的关联计算。在SQL中,分组必须同时进行汇总计算,并且不能进行对象式关联访问,因此处理这类问题会比较复杂,只能用窗口函数嵌套多层子查询这类高级技巧来实现。而本文要介绍的SPL能够支持真正的分组,进行直观的对象式关联访问,从而解决这类问题...

SPL 简化 SQL 案例详解:多级关联

2019-07-23
阅读 4 分钟
953
在数据库应用开发中,我们经常需要面对复杂的SQL式计算,多级关联就是其中一种。SQL的join语句比较抽象,只适合表达简单的关联关系,一旦关联的层级较多,相应的代码就会变得非常复杂。而SPL则可以利用对象引用来表达关联关系,从而使代码更加直观,下面就用一个例子来加以说明。

SPL 简化 SQL 案例详解:多层固定分组

2019-06-14
阅读 3 分钟
1.3k
在数据库应用开发中,我们经常需要面对各种复杂的SQL计算,多层固定分组就是其中一种。实现该算法的思路是用left join语句将源数据按照固定的依据对齐,但由于该算法往往涉及分组汇总、行间计算、填补缺失数据,而且层次较多,因此相应的SQL语句会非常复杂。

性能优化技巧 - 查找

2019-05-13
阅读 10 分钟
808
【摘要】日常生活中,我们会遇到各种各样的数据,小到公司通讯录,大到互联网用户行为分析。在进行数据分析处理的过程中,查询是必不可少的环节,如何更加高效地进行数据查询。点击:性能优化技巧 - 查询,来乾学院一探究竟!SPL为用户提供了强大的索引机制以及针对不同场景中各对象的查询函数,善加运用,可以显著提高...

SPL 关联优化技巧

2019-04-28
阅读 4 分钟
938
1.          小维表 用SPL进行关联,当维表不大时可以读入内存。 1.1           单字段主键 如果维表是单字段主键,可以使用switch做连接。例如有订单、客户、雇员三个表存储在集文件中,表结构如下: 现在把订单表和客户表、雇员表进行关联: A1:订单表数据很多,所以用游标。 A2:客户表数据少,全部装入内存,并且建...

Java 搞定 SQL 集合运算的最简方法

2019-03-11
阅读 8 分钟
1.7k
作为 java 程序员,用代码直接实现类似 SQL 中的交并补差的集合运算,总是要编写大量的代码,如果能有一个专门的外部数据工具,通过写简单类似 SQL 的脚本来实现,在 java 中直接调用并可以返回结果集,就再好不过了。Java 版集算器正是解决这一难题的神器,通过 SPL 脚本可以直观自然得写出运算,再使用 java 调用 SPL ...

Java 中如何使用 SQL 查询文本

2019-02-13
阅读 4 分钟
2.3k
【摘要】         使用 SQL 查询语言,你只能查询位于数据库里面的数据,但是当你面对的数据是一些 Excel 表格或者 Txt 文本格式时,有什么办法能直接对着文件进行 Select 查询呢?去乾学院看个究竟:Java 中如何使用 SQL 查询文本! Ø 引言

SQL 难点解决:记录的引用

2019-02-13
阅读 7 分钟
1.2k
【摘要】        SQL 虽然是针对记录的集合进行运算, 但在记录的多次利用以及有序运算却经常要重复计算,效率不佳。而集算器 SPL 则要直观许多,可以按自然思维习惯写出运算。这里对 SQL 和集算器 SPL 在记录的利用及有序运算方面进行了对比,如果需要了解更多,请前往乾学院:SQL 难点解决:记录的引用!

百万级分组大报表开发与呈现

2018-10-30
阅读 4 分钟
2.3k
在《秒级展现的百万级大清单报表怎么做》中,我们介绍了无论 RDB 还是非 RDB,润乾报表都能够通过异步线程实现秒级海量大清单报表(以下简称:大报表)。实际业务中,除了查询明细,有时还要展现全量汇总数据,或者查询分组明细和计算分组汇总。本文就将介绍这些带有汇总和分组的大报表的开发方法。

优化Join运算的系列方法(3)

2018-10-12
阅读 4 分钟
1.3k
5 综合案例 实际业务中,多表关联运算十分常见,外键表、同维表、主子表这几种关联类型可能会混合出现。下面我们来看一个综合案例。 5.1 表结构和查询目标 某电商平台中和订单编号这个字段相关的有6个表,主要表结构如下: 订单表 订单明细表 订单优惠表 订单发货表 订单支付表 订单评价表 订单编号 订单编号 订单编号 ...

优化 Join 运算的系列方法(2)

2018-10-11
阅读 7 分钟
1.2k
如果只是事实表很大,而维表仍然可以全部装入内存,那么仍然可以采用上面的外键指针化方法处理,只要修改一下对事实表的访问,使用游标的方式取从集文件里分批取数进行处理即可。不过因为这种指针是在游标取数时才临时建立的,所以就不象全内存时那样可以复用已经建立过的指针了。