【和sql对比】对分组结果排序 | 润乾 -pg游戏官网登录入口

人数最多和最少的两个部门

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

网站地图