【和sql对比】逐步完成结果集 | 润乾 -九游会登陆
每个部门出一对男女员工组成游戏小组
sql解法
with a as (select 姓名,部门, row_number() over(partition by 部门 order by 1) 序号 from 员工表 where 性别='男'), b as (select 姓名,部门, row_number() over(partition by 部门 order by 1) 序号 from 员工表 where 性别='女') select 姓名,部门 from a where 部门 in ( select distinct 部门 from b ) and 序号=1 union all select 姓名,部门 from b where 部门 in ( select distinct 部门 from a ) and 序号=1
有时结果集按某种算法逐步完成并不困难,但不分步的sql迫使我们采取非常不同的思路以使计算能在一个语句内完成,不仅理解困难而且计算低效。
spl解法
a | b | c | ||
1 | =[ ] | =demo.query(“select * from 员工表”).group(部门) | 结果在a1 | |
2 | for b1 | =a2.group@1(性别) | 循环每组选出一对男女员工 | |
3 | =if b2.len()>1 | >a1=a1|b2 | 能选出则添进结果集 |
有步骤和程序逻辑支持的spl能很自然地逐步完成结果。