SQL:子组中的聚合表数据

时间:2016-01-15 13:09:42

标签: sql sqlite group-by aggregate

其他SQLers。

我有一个简单而复杂的问题,我需要用SQL(SQLite)来解决我的FME脚本才能有效运行。我有想要聚合的数据但是在子组中 - 考虑z级别。这是一个地质概况,我想在创建我的个人资料之前简化传入的数据。

示例数据

x,y,z_from,z_to,value
1,2,1,2,A
1,2,2,3,A
1,2,3,4,B
1,2,4,5,A
1,2,5,6,A
1,2,6,7,A
1,2,7,8,C

使用SQL我想在值上聚合,但只聚合相邻的行(一种是溶解,而是在非空间数据上)。我想计算(也在sql中)正确的z_from-和z_to-values。因此,上述示例数据的结果应为:

x,y,z_from,z_to,value
1,2,1,3,A 
1,2,3,4,B
1,2,4,7,A
1,2,7,8,C 

任何有关这方面的帮助都将永远铭记在心。

彼得

1 个答案:

答案 0 :(得分:1)

看起来你想要z_to定义的“下一个”值不同的所有行。不幸的是,SQLite不支持lead(),但您可以这样做:

select e.*
from (select e.*,
             (select e2.value
              from example e2
              where e2.z_to > e.z_to
              order by e2.z_to
              limit 1
             ) as next_value
      from example e
     ) e
where next_value is null or next_value <> value;