У меня возникла ситуация, когда мне нужно было найти такие записи из таблиц, которые загружаются в DW более 24 часов.
, поэтому для этого у меня есть две таблицы
- Таблица 1: - Которая содержит статистику о каждой загрузке
- Таблица 2: - Которая содержит статистику о том, когда мы получили каждый файл для загрузки
Теперь я хочу только те записи, которые заняли более 24 часов для загрузки. Дата получения файла указана в таблице 2, тогда как после завершения загрузки в таблице 1 таблица 2 может иметь более 1 записей для каждого файла.
Я разработал приведенный ниже запрос, но он занимает больше времени
SELECT
rcd.file_date,
rcd.recived_on as "Date received On",
rcd.loaded_On "Date Processed On",
to_char(rcd.recived_on,'DY') as "Day",
round((rcd.loaded_On - rcd.recived_on)*24,2) as "time required"
FROM (
SELECT
tbl1.file_date,
(SELECT tbl2.recived_on
FROM ( SELECT recived_on
FROM table2
Where fileName = tbl1.feedName
order by recived_on) tbl2
WHERE rownum = 1) recived_on,
tbl1.loaded_On,
to_char(tbl2.recived_on,'DY'),
round((tbl1.loaded_On - tbl2.recived_on)*24,2)
FROM Table1 tbl1 ,
Table1 tbl2
WHERE
tbl1.id=tbl2.id
AND tbl1.FileState = 'Success'
AND trunc(loaded_On) between '25-Feb-2020' AND '03-Mar-2020'
) rcd
WHERE (rcd.loaded_On - rcd.recived_on)*24 > 24;