我有一个包含列offer_id
、item_id
和report_date
列的表(不是时间戳,只是日期(
我想获取该给定日期特定item_id
的最新offer_id
记录。
谁能帮忙?
我尝试了如下内容,但不确定是否正确,仍在学习:
SELECT A.report_dt, A.offer_id, A.item_id
FROM table A
WHERE A.rpt_dt = (SELECT MAX(rpt_dt)
FROM table
WHERE item_id = A.item_id
AND report_dt = date'2020-06-01')
ORDER BY item_id;
您可以使用窗口函数获取每个特定item_id
的最新offer_id
值,例如RANK()
如下所示:
SELECT offer_id, item_id
FROM
(
SELECT t.*,
RANK() OVER (PARTITION BY item_id
ORDER BY report_dt DESC) AS rnk
FROM tab t
) tt
WHERE tt.rnk = 1
其中report_dt
值按降序(ORDER BY report_dt DESC
(排序,用于子查询中的每个分组item_id
(PARTITION BY item_id
(。