Quantcast
Viewing all articles
Browse latest Browse all 3353

Re: Fetch the first record with 24 hr interval based on first record timestamp

Window functions are your friends. :-)

 

SELECT RECORD_NUMBER,MIN(CREATE_DATE) CREATE_DATE FROM (
SELECT *, MIN(TO_DATE) OVER (PARTITION BY RECORD_NUMBER ORDER BY CREATE_DATE DESC) TO_DATE2 FROM (
SELECT *, CASE WHEN DIFF > 24 THEN CREATE_DATE WHEN NEXT_DATE IS NULL THEN '2100-01-01' ELSE NULL END TO_DATE FROM (
SELECT *, SUM(SECONDS_BETWEEN(CREATE_DATE,NEXT_DATE)/3600) OVER (PARTITION BY RECORD_NUMBER ORDER BY CREATE_DATE) DIFF FROM (
SELECT RECORD_NUMBER, CREATE_DATE, LEAD(CREATE_DATE) OVER (PARTITION BY RECORD_NUMBER ORDER BY CREATE_DATE) NEXT_DATE
FROM "TEST".TEST_TABLE)
GROUP BY RECORD_NUMBER, CREATE_DATE,NEXT_DATE)))
GROUP BY RECORD_NUMBER, TO_DATE2
ORDER BY RECORD_NUMBER, CREATE_DATE

Viewing all articles
Browse latest Browse all 3353

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>