【和SQL对比】按指定次序分组
按次序列出研发部、市场部、销售部、商务部、行政部的女员工人数和平均年龄
SQL解法
with A as (select 1 序号, '研发部' 部门 from dual union select 2, '销售部' from dual union select 3, '商务部' from dual union select 4, '行政部' from dual ) select A.部门,count(*) 人数,avg(B.年龄) 平均年龄 from A left join 员工表 B on (A.部门=B.部门) where B.性别='女' group by A.序号,A.部门 order by A.序号
由于SQL的集合无序,处理固定次序排序和分组一直是件麻烦事,需要人为增加序号字段保证结果集的正确次序。
SPL解法
A | |
1 | =["研发部","销售部","商务部","行政部"] |
2 | =demo.query(“select * from 员工表”).select(性别:"女").align(A1,部门) |
3 | =A2.new(A1(#):部门,~.len():人数,~.avg(年龄):平均年龄) |
以有序集合为基础的SPL加上特有的对齐运算处理这类计算就方便多了。