sql - 使用重叠组填充 SQL 表中的缺失数据
问题描述
我有一些分析数据,其中访问者的单个活动流是我们的网站,其中部分跟踪有一个 id,后来标识符是一个不同的值。如何使用 SQL 填充数据以使其完整。
id1 | id2 | timestamp
-----+-----+---------------------
null | 3 | 123450
null | 3 | 123451
null | 3 | 123452
5 | 3 | 123453
5 | 3 | 123454
5 |null | 123455
5 |null | 123456
5 |null | 123457
...
null | 8 | 123450
null | 8 | 123451
null | 8 | 123452
9 | 8 | 123453
9 | 8 | 123454
9 |null | 123455
9 |null | 123456
9 |null | 123457
...
上面的两个部分属于同一组,我知道这是因为它们基本上在某些时候停止记录 id2。
我想要一个查询或 sql 和中间表,使我能够填充上面的空值,以便我拥有:
id1 | id2 | timestamp
-----+-----+---------------------
5 | 3 | 123450
5 | 3 | 123451
5 | 3 | 123452
5 | 3 | 123453
5 | 3 | 123454
5 | 3 | 123455
5 | 3 | 123456
5 | 3 | 123457
...
9 | 8 | 123450
9 | 8 | 123451
9 | 8 | 123452
9 | 8 | 123453
9 | 8 | 123454
9 | 8 | 123455
9 | 8 | 123456
9 | 8 | 123457
...
解决方案
假设会有一个id2
对应一个id1
非null,
只有一个id1
对应一个id2
非null
select a.id1, a.id2, b.timestamp
from (
select min(id1) id1, id2
from tbl
where id1 is not null and id2 is not null
group by id2
) a right join tbl b
on (a.id1 = b.id1) OR (a.id2 = b.id2)
推荐阅读
- html - 如何将文本框值嵌入 HTML 中的 href
- arrays - 在 SAS 中编写公式
- html - 以百分比表示的 Img 标签大小
- keycloak - 在身份验证中创建具有另一个值的 cookie ( Keycloak )
- python-3.x - Python。它不是从 Stack 对象打印实际值,而是返回该对象的地址
- reactjs - 如何以 Object 形式返回从 Axios 接收到的数据
- javascript - 如何使用 yup 在反应钩子中不允许特殊字符和空格
- r - R按事件序列过滤
- jquery - 每个多步骤表单卡的多个 DIV 不起作用
- javascript - 如何将 'xxth Mar XXXX' 格式的日期转换为 'DD/MM/YY' 格式?