【和SQL对比】逐步完成结果集

每个部门出一对男女员工组成游戏小组
01 with A as
02        (select 姓名,部门,
03              row_number() over(partition by 部门 order by 1) 序号
04         from 员工表 WHERE 性别='男'),
05      B as
06        (select 姓名,部门,
07              row_number() over(partition by 部门 order by 1) 序号
08         from 员工表 WHERE 性别='女')
09 select 姓名,部门 from A
10 where 部门 in ( select distinct 部门 from B ) and 序号=1
11 union all
12 select 姓名,部门 from B
13 where 部门 in ( select distinct 部门 from A ) and 序号=1

有时结果集按某种算法逐步完成并不困难,但不分步的SQL迫使我们采取非常不同的思路以使计算能在一个语句内完成,不仅理解困难而且计算低效。

A B C
1 =[ ] =demo.query(“select * from 员工表”).group(部门) 结果在A1
2 for B1 =A2.group@1(性别) 循环每组选出一对男女员工
3 =if B2.len()>1 >A1=A1|B2 能选出则添进结果集

有步骤和程序逻辑支持的集算器能很自然地逐步完成结果。