【和SQL对比】对分组结果排序
人数最多和最少的两个部门
SQL解法
select 部门 from (select 部门,row_number() over (order by 人数 desc) 正排名, row_number() over (order by 人数 asc) 倒排名 from (select 部门, count(*) 人数 from 员工表 group by 部门)) where 正排名=1 or 倒排名=1 order by 正排名
对分组结果集过滤用到跨行计算时,无法再使用简单的having子句写出,需要嵌套的子查询才能完成计算。
SPL解法
A | |
1 | =demo.query(“select * from 员工表”).group(部门) |
2 | =A1.sort(~.len()).m([-1,1]) |
3 | =A2.(部门) |
对于SPL来讲,仍然是对集合排序和选出,只是集合的成员又是个集合而已。