【和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的集合无序,处理固定次序排序和分组一直是件麻烦事,需要人为增加序号字段保证结果集的正确次序。

A
1 =[“研发部”,”销售部”,”商务部”,”行政部”]
2 =demo.query(“select * from 员工表”).select(性别:”女”).align(A1,部门)
3 =A2.new(A1(#):部门,~.len():人数,~.avg(年龄):平均年龄)

以有序集合为基础的集算器加上特有的对齐运算处理这类计算就方便多了。