【和SQL对比】针对子表分组
列出员工及其累计工作超过1年的城市数量。
SQL解法
select 姓名,count(*) 城市数 from (select 员工表.姓名 姓名,履历表.城市 城市 from 员工表,履历表 where 员工表.姓名=履历表.姓名 group by 姓名,城市 having sum(工作天数)>=365) group by 姓名
使用多表连接的方法处理子表,分组后的结果集与子表记录数相同,需要再次分组才能把记录数归并成与主表一数。
SPL解法
A | |
1 | =demo.query(“select * from 员工表”).new(姓名,履历.group(城市).count(~.sum(工作天数)>=365):城市数) |
将子表集合作为主表字段处理,如同普通集合一样分组过滤。