【和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加上特有的对齐运算处理这类计算就方便多了。