简化SQL式计算之固定排序

在数据库应用开发中,我们经常要面对复杂的SQL式计算,固定排序就是其中一种。固定排序不是按照某个字段升序或降序排序,而是有着固定的顺序,比如按照2,3,1的顺序排序,或者按照”DSGC”,”TAS”,”GC”,”HU”的顺序来排序。如果允许在数据库建一张表来存储依据,那就可以用join语句来实现排序。但很多时候排序依据是变动的,或者数据库不能建表,这时就需要先union再join,或者用decode函数。排序依据比较短的时候可以这样做,但排序依据有时候很长,会导致手工书写很长的union字符串和decode字符串,出错率会很高。

集算器可以轻松实现固定排序,下面用例子来说明。

表LIQUORS记录着大量的酒品库存,现在需要按照固定的LID顺序排序,比如“2,1,3,4,5…”。表LIQUORS的部分数据如下:

集算器代码:

A1:从数据库取数,部分结果如下:

A2[email protected]([2,1,3,4,5],
LID)这句代码将A1对象中的LID字段,按照2,1,3,4,5的顺序排列,结果如下:

上述排序依据可以是外部参数,比如定义一个参数arg1,将A2中的代码改为:=A1.align(arg1, LID)。执行脚本(也可以通过JAVA或报表调用),在参数界面输入:[2,1,3,4,5],如下:

计算后结果和之前完全一样。

集算器不仅能解决固定排序的问题,还能进行固定分组,可参考《集算器简化SQL式计算之固定分组》

另外,集算器可被报表工具或java程序调用,调用的方法也和普通数据库相似,使用它提供的JDBC接口即可向java主程序或报表工具返回ResultSet形式的计算结果,具体方法可参考相关文档。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 15:42:39

简化SQL式计算之固定排序的相关文章

简化SQL式计算之行间计算

在数据库应用开发中,我们经常需要面对复杂的SQL式计算,行间计算就是其中一种,比如用每月的销售额除以上月的销售额,求比上期,或用每月销售额除以去年同月的销售额,求同期比.有些数据库没有提供SQL2003标准的窗口函数(或支持的不完备),完成行间计算就需要更换思路使用连接(join)运算替代,不仅难以理解而且运算效率低下.即使可以使用窗口函数仍要面临嵌套子查询等问题,SQL语句仍较为冗长.而使用集算器可以用更简单直观的代码来实现行间计算,下面用一个例子来说明. 表sales存储着多年的订单数据,请

集算器简化SQL式计算之组内运算

在开发数据库应用时,经常会遇到分组后针对组内数据的运算问题,如:列出近3年每年都发表过论文的学生名单,统计全部参加了历次培训的员工,选出每位客户的高尔夫成绩最高的三天等等.SQL完成这类运算较为复杂,一般需要嵌套多层,导致代码难以理解和维护.而集算器擅长表达这类组内计算,且很容易和JAVA或报表工具集成.下面用一个例子来说明. 根据数据库表SaleData统计出2013年中,每个月销售金额均排在前20名的客户名称.SalesData的部分数据如下: 想解决这个问题,需要选出2013年的销售数据,

大数据流式计算:关键技术及系统实例

孙大为1, 张广艳1,2, 郑纬民1 摘要:大数据计算主要有批量计算和流式计算两种形态,目前,关于大数据批量计算系统的研究和讨论相对充分,而如何构建低延迟.高吞吐且持续可靠运行的大数据流式计算系统是当前亟待解决的问题且研究成果和实践经验相对较少.总结了典型应用领域中流式大数据所呈现出的实时性.易失性.突发性.无序性.无限性等特征,给出了理想的大数据流式计算系统在系统结构.数据传输.应用接口.高可用技术等方面应该具有的关键技术特征,论述并对比了已有的大数据流式计算系统的典型实例,最后阐述了大数据流

流式计算(一)-Java8Stream

大约各位看官君多少也听说了Storm/Spark/Flink,这些都是大数据流式处理框架.如果一条手机组装流水线上不同的人做不同的事,有的装电池,有的装屏幕,直到最后完成,这就是典型的流式处理.如果手机组装是先全部装完电池,再交给装屏幕的组,直到完成,这就是旧式的集合式处理.今天,就来先说说JDK8中的流,虽然不是很个特新鲜的话题,但是一个很好的开始,因为——思想往往比细节重要! 准备: Idea2019.03/Gradle5.6.2/JDK11.0.4/Lambda 难度:新手--战士--老兵

流式计算(五)-Flink核心概念

一手资料,完全来自官网,直接参考英文过来的,并加了一些自己的理解,希望能让看官君了解点什么,足矣. 环境:Flink1.9.1 难度:新手--战士--老兵--大师 目标: 理解Flink的计算模型 认识各重要组件 说明: 本篇作为前两篇的补充内容,算是理论篇 步骤: 01-Flink编程模型 Flink的流计算整体来看都是按照Source -> Transformation -> Sink三步走,即获取流源 -> 进行转换 -> 汇聚(Sink),但“转换 (Transformat

流式计算形态下的大数据分析

1 介 绍 1.1 流式计算介绍 流式大数据计算主要有以下特征: 1)实时性.流式大数据不仅是实时产生的,也是要求实时给出反馈结果.系统要有快速响应能力,在短时间内体现出数据的价值,超过有效时间后数据的价值就会迅速降低. 2)突发性.数据的流入速率和顺序并不确定,甚至会有较大的差异.这要求系统要有较高的吞吐量,能快速处理大数据流量. 3)易失性.由于数据量的巨大和其价值随时间推移的降低,大部分数据并不会持久保存下来,而是在到达后就立刻被使用并丢弃.系统对这些数据有且仅有一次计算机会. 4)无限性

什么是流式计算?

一.流式计算的背景 在日常生活中,我们通常会先把数据存储在一张表中,然后再进行加工.分析,这里就涉及到一个时效性的问题.如果我们处理以年.月为单位的级别的数据,那么多数据的实时性要求并不高:但如果我们处理的是以天.小时,甚至分钟为单位的数据,那么对数据的时效性要求就比较高.在第二种场景下,如果我们仍旧采用传统的数据处理方式,统一收集数据,存储到数据库中,之后在进行分析,就可能无法满足时效性的要求. 二.流式计算与批量计算 大数据的计算模式主要分为批量计算(batch computing).流式计

Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL

Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL 1.1. $ 美元字符, php 黑头1 1.2. 默认变量的范围和声明:1 1.3. 变量的存储,储存在变量池里Map(varName,varVal)1 1.3.1. 复合变量1 1.4. 变量类型简化: 字符串 数字,  bool1 1.5. 变量自动隐式转换2 1.6. 类型推导2 2. 参考 复合变量2 1.1. $ 美元字符, php 黑头 1.2. 默认变量的范围和声明

数式计算(递归解法)

1 /** 2 *注:1.有一个bug(以及未知什么bug) 我已知的是: ([email protected])(ps:@为运算符),这种带括号的表达式不能单独的出现,否则异常退出,,但是只要([email protected])@n 3 4 带括号的表达式出现任意+,-,*,/的运算都能进行正常运算(前面 [email protected]([email protected])也不可以)...不知道为什么()表达式后面没有操作时会异常退出. 5 *不知道如何解决.希望感兴趣的人帮帮忙! 6