sql - 如何根据参考表上的最近日期生成连接中的每日分数
问题描述
SQL Vertica 问题(但感谢任何 SQL 查询答案)我有一个表“Base”当前处于“day-url”级别,我尝试通过加入“day-url”来获取每天每个 url 的“分数”级别参考表“分数更新”。问题是参考表不是每天而是特定日期级别。我需要在“基础”中的“日期”之前将“分数更新”中的分数与“更新日期”结合起来。下面的例子:(请看底部的图片)
我有什么:(基础)
Date URL Score
2019-08-01 A
2019-08-01 B
2019-08-02 A
2019-08-03 A
2019-08-09 B
2019-08-10 A
2019-08-11 A
2019-08-11 B
2019-08-13 B
(分数更新)
Update_Date URL Score
2019-07-25 A x
2019-07-25 B y
2019-08-10 A alpha
2019-08-10 B beta
我想要的是:我拥有的:(基础)
Date URL Score
2019-08-01 A x
2019-08-01 B y
2019-08-02 A x
2019-08-03 A x
2019-08-09 B y
2019-08-10 A alpha
2019-08-11 A alpha
2019-0B-11 B beta
2019-08-13 B beta
并且两个表都将不断更新以获取未来的日期数据。谁能帮我如何加入这两张桌子?
谢谢!
解决方案
你是这个意思吗?
WITH
-- your input ...
base(dt,url,score) AS (
SELECT DATE '2019-08-01','A',NULL
UNION ALL SELECT DATE '2019-08-01','B',NULL
UNION ALL SELECT DATE '2019-08-02','A',NULL
UNION ALL SELECT DATE '2019-08-03','A',NULL
UNION ALL SELECT DATE '2019-08-04','B',NULL
UNION ALL SELECT DATE '2019-08-05','A',NULL
UNION ALL SELECT DATE '2019-08-06','A',NULL
UNION ALL SELECT DATE '2019-08-10','A',NULL
UNION ALL SELECT DATE '2019-08-11','A',NULL
UNION ALL SELECT DATE '2019-08-11','B',NULL
UNION ALL SELECT DATE '2019-08-12','A',NULL
UNION ALL SELECT DATE '2019-08-13','A',NULL
)
,
-- your input ...
score_upd(upd_dt,url,score) AS (
SELECT DATE '2019-07-25','A','x'
UNION ALL SELECT DATE '2019-07-25','B','alpha'
UNION ALL SELECT DATE '2019-08-10','A','y'
UNION ALL SELECT DATE '2019-08-10','B','beta'
)
-- real select starts here ..
SELECT
b.dt
, b.url
, u.score
FROM base b
LEFT JOIN score_upd u
ON b.url=u.url
AND b.dt INTERPOLATE PREVIOUS VALUE u.upd_dt
ORDER BY dt,url
;
-- out dt | url | score
-- out ------------+-----+-------
-- out 2019-08-01 | A | x
-- out 2019-08-01 | B | alpha
-- out 2019-08-02 | A | x
-- out 2019-08-03 | A | x
-- out 2019-08-04 | B | alpha
-- out 2019-08-05 | A | x
-- out 2019-08-06 | A | x
-- out 2019-08-10 | A | y
-- out 2019-08-11 | A | y
-- out 2019-08-11 | B | beta
-- out 2019-08-12 | A | y
-- out 2019-08-13 | A | y
-- out (12 rows)
推荐阅读
- jquery - 如何在toggledropdown nav上显示列表除以5?
- kotlin - 在 TornadoFX 中使用工作区时如何使用范围?
- kubernetes - 获取已部署镜像 helm/kubernetes 的值
- php - Symfony 和 Doctrine 的语法错误或访问冲突
- spring - 如何在春季启动Thymeleaf中的th:href中传输参数?
- r - data.table 中使用的 .BY 和 .EACHI 特殊符号的具体用例?
- python - 使用pyjq解析多个json值,用逗号分隔
- firebase - 在 a/b 测试中暂停注册,但仍然有良好的变体体验 [Firebase]
- scala - scala反射,获取超类的类型参数
- spring - Hibernate JOIN FETCH - 对象在结果集中出现多次