在数据库里统计某个字段中相同數据直接用Group by就可以了但如果附加个顺序条件后就有点麻烦了,例如统计每一个玩家的连胜或者连败情况。 Oracle有窗口分析函数需要多层嵌套加上高级分析函数才能实现,Mysql、hive sql和mysql区别等数据库不如Oracle强大实现起来就比较费劲了。集算器作为应用和数据库的中间计算层可以用統一的方式,很简单就能解决此类问题先看一个简单的例子,表logs 如下求num中连续 出现3次以上的数字都有哪些?
集算器的代码是这样的
A2:按照相邻num同值分组
A3:选出至少连续出现三次相同的num
如果想知道相同连续值最大有多少条记录,A3中的表达式改为=A2.max(~.len())即可
有些需求不是按顺序有相同值,是按顺序有相同趋势比如,找出连续亏损达三月或以上的那些月份的记录用集算器很简单,只是把相邻数据分组规则从等值条件改为趋势条件即可代码参考如下:
考勤记录合并进出状态也是类似的情况,在电商、物流和银行也常遇到统计用户连续交易的總额、连续登陆天数、连续登陆开始和结束时间、间隔天数等这样的需求都可以仿照这些例子很快实现。其实还有很多情况用SQL十分不方便但用集算器却很简单,感兴趣可以看看集算器优化 SQL 示例汇总 集算器提供了Jdbc接口,Java可直接调用使用非常方便,有关集算器安装使用、获得免费授权和相关技术资料参见 如何使用集算器