获取组中每一天的最后记录
Get Last Record for each day in a Group
我正在尝试获取每天的 Last/Latest 记录。对于 12 月 14 日,有两条记录我想获得下午 5 点的记录,因为它是那天的最后一条记录,但是如果你看到 row_number(rn = 2 & 3)
,那么它不会选择这条记录,只给我时间点记录今天(12 月 15 日,因为它的 rn = 1)。
ITCFID ControlId ResourceId DateTime rn
P05.01.03 CloudFront.1 AWS:::Acount:1111111111111 12/14/2021 5:00 PM 2
P05.01.03 CloudFront.1 AWS:::Acount:1111111111111 12/14/2021 06:01 AM 3
这是我正在使用的查询:
WITH
Pointintimesecurityfindings AS (
SELECT
*
, ROW_NUMBER() OVER (PARTITION BY ResourceId,ControlId,itcfid ORDER BY DateTime DESC) rn
FROM itcf_final_summary_dashboard
)
SELECT *
FROM Pointintimesecurityfindings
WHERE rn = 1
对于一个特定的ITCFID -> 可以有多个Control ID,Control ID可以有多个Resource ID。我想获取特定的 itcfid -> 唯一控制 ID -> 唯一资源 ID -> 获取当天的最新记录。
如果你想要每天最新的,你需要按天分区,例如
SQL 最初标记的服务器解决方案:
ROW_NUMBER() OVER (PARTITION BY
ResourceId
, ControlId
, itcfid
, DATEPART(year,[DateTime])
, DATEPART(dayofyear,[DateTime]
) ORDER BY [DateTime] DESC) rn
更新问题的 Presto 解决方案:
ROW_NUMBER() OVER (PARTITION BY
, ResourceId
, ControlId
, itcfid
, DATE_FORMAT(Datetime,'%Y')
, DATE_FORMAT(Datetime,'%j')
ORDER BY DateTime DESC
) rn
我正在尝试获取每天的 Last/Latest 记录。对于 12 月 14 日,有两条记录我想获得下午 5 点的记录,因为它是那天的最后一条记录,但是如果你看到 row_number(rn = 2 & 3)
,那么它不会选择这条记录,只给我时间点记录今天(12 月 15 日,因为它的 rn = 1)。
ITCFID ControlId ResourceId DateTime rn
P05.01.03 CloudFront.1 AWS:::Acount:1111111111111 12/14/2021 5:00 PM 2
P05.01.03 CloudFront.1 AWS:::Acount:1111111111111 12/14/2021 06:01 AM 3
这是我正在使用的查询:
WITH
Pointintimesecurityfindings AS (
SELECT
*
, ROW_NUMBER() OVER (PARTITION BY ResourceId,ControlId,itcfid ORDER BY DateTime DESC) rn
FROM itcf_final_summary_dashboard
)
SELECT *
FROM Pointintimesecurityfindings
WHERE rn = 1
对于一个特定的ITCFID -> 可以有多个Control ID,Control ID可以有多个Resource ID。我想获取特定的 itcfid -> 唯一控制 ID -> 唯一资源 ID -> 获取当天的最新记录。
如果你想要每天最新的,你需要按天分区,例如
SQL 最初标记的服务器解决方案:
ROW_NUMBER() OVER (PARTITION BY
ResourceId
, ControlId
, itcfid
, DATEPART(year,[DateTime])
, DATEPART(dayofyear,[DateTime]
) ORDER BY [DateTime] DESC) rn
更新问题的 Presto 解决方案:
ROW_NUMBER() OVER (PARTITION BY
, ResourceId
, ControlId
, itcfid
, DATE_FORMAT(Datetime,'%Y')
, DATE_FORMAT(Datetime,'%j')
ORDER BY DateTime DESC
) rn