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