非等值分组
按段分组是常见的需求,如成绩段(优秀,良好,…)、年龄段(青年、中年、…)等。
SQL实现分段一直很繁琐,段数不多的静态分段,可以用case when条件比较实现;而段数很多或规则变化的动态分段,一般则要建立临时表用非等值JOIN实现了。无论哪种情况的处理方法都很繁琐。
集算器中用penum函数即可返回枚举条件的序号:
[”?=60&&?=75&&?=90”].penum(成绩)
如果分段是连续的,还可以用pseg函数更简单地获得分段序号:
[60,75,90].pseg(成绩)
这里的条件和分段都是普通数组,可作为参数传递进来,长度也不限制。基于分段号即可将枚举分组和按段分组转变成普通的等值分组:
A | B | |
1 | [”?=60本文来源gao@daima#com搞(%代@#码@网2&&?=75&&?=90”] | 条件段,可以是参数 |
2 | [60,75,90] | 区间段,可以是参数 |
3 | =db.query(“select * from 成绩表”) | |
4 | =A3.groups(A1.penum(成绩);count(1):人数) | 按条件段分组 |
5 | =A3.groups(A2.pseg(成绩);count(1):人数) | 按区间段分组 |