【和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来讲,仍然是对集合排序和选出,只是集合的成员又是个集合而已。
