如果数据是连续的,我希望将行组合成一行。我查看过空白和孤岛,我知道我以前经常使用SQL Server进行这种操作。这个解决方案让我无法理解,但我记得我做过某种类型的ROW_NUMBER() over (Partition BY groupId, name, email, phone ORDER BY id) - ROW_NUMBER() over (ORDER BY id) seq
计算。我没能成功地把这件事办好。
下面是一个示例数据集:
预期结果:
任何帮助都将不胜感激。
发布于 2021-09-21 01:01:10
如果只想在每个组中使用最后一行,则可以使用lead()
select t.*
from (select t.*,
lead(id) over (order by id) as next_id,
lead(id) over (partition by groupid, name, email, phone order by id) as next_id_grp
from t
) t
where next_id_grp is null or next_id_grp <> next_id;
这是针对同一组成员的下一个id
和下一个id
。当它们不同时,则行是组中的最后一行。
这比row_number()
方法更好,因为这通常需要聚合。
https://stackoverflow.com/questions/69262294
复制相似问题