sql - ORACLE - 获取每小时的最后一条记录
问题描述
我有一个日期时间字段,有时它会检索我重复的数据,我每小时需要一条记录,因为如果相同的 objectid 在同一小时有 3 条记录,例如晚上 11 点,我需要从该小时示例记录 1 中获取最后一条记录晚上 11:05 记录 2 晚上 11:35 记录 3 晚上 11:55
只选择从晚上 11:55 开始的记录,每小时的最后一条记录,可能是 objectid 在不同的时间有更多的记录,但我每小时只需要一条记录,选择最后一条记录更多的分钟。任何想法?如果我使用最大值,每个 objectid 只会获得一条记录,我需要每小时一条记录。
select *
from prod.WX_RAW
where trunc(datetimeutc,'DD') = to_date('01-01-2021')
and objectid=10000355399
and TEMP_CODE NOT IN ('7','2','3','R','U')
and OBS_TYPEID IN ('7', '4', '6')
and REPORTTYPE = 'FM-15'
ORDER BY DATETIMEUTc;
示例数据:
object id. datetimeutc obstype country code. wind direction
10000355399 1/1/2021 11:15:00.000000000 PM 7 KCLK V020 340 N
10000355399 1/1/2021 11:35:00.000000000 PM 7 KCLK V020 350 N
10000355399 1/1/2021 11:55:00.000000000 PM 7 KCLK V020 360 N
解决方案
您可以使用:
SELECT *
FROM (
select w.*,
ROW_NUMBER() OVER (
PARTITION BY objectid, TRUNC(datetimeutc, 'HH')
ORDER BY datetimeutc DESC
) AS rn
from prod.WX_RAW w
where trunc(datetimeutc,'DD') = DATE '2021-01-01'
and objectid=10000355399
and TEMP_CODE NOT IN ('7','2','3','R','U')
and OBS_TYPEID IN ('7', '4', '6')
and REPORTTYPE = 'FM-15'
)
WHERE rn = 1
ORDER BY DATETIMEUTc;
db<>在这里摆弄
推荐阅读
- python-3.x - python - 如何在Python-Tkinter中连续输入字母的搜索框带来数据?
- jakarta-mail - 有没有办法让 Google Cloud Run 传递我的 Content-Type?
- laravel - Laravel Eloquent 表关系与 $id
- sql - 按特定顺序选择记录
- spring - Spring Security - Oauth 实现
- python - 使用 sphinx 生成文档时如何禁用 ssl 验证?(在代理后面工作)
- sql - 操作选择查询的输出
- wso2 - WSO2 ESB:SFTP 文件传输:验证失败
- logstash - 在我的情况下,add_field 在 logstash 中不起作用
- audio - 如何通过 RTP 流发送 G722 编码的音频?