Использование нескольких агрегатных функций в предложении where - PullRequest
0 голосов
/ 08 апреля 2019

У нас есть отборное заявление в производстве, которое занимает довольно много времени. Текущий запрос использует номер строки - оконную функцию. Я пытаюсь переписать запрос и проверить то же самое. моё предположение, что если предположить, что его совокупные значения выборки из таблицы orc вместо номера строки могут помочь сократить время выполнения,

Возможно ли что-то подобное. Дайте мне знать, если я что-то упустил. Извините, я пытаюсь учиться, поэтому, пожалуйста, потерпите мои ошибки, если они есть. Я попытался переписать запрос, как указано ниже.

Оригинальный запрос

SELECT
Q.id,
Q.crt_ts,
Q.upd_ts,
Q.exp_ts,
Q.biz_effdt
(
SELECT u.id, u.crt_ts, u.upd_ts, u.exp_ts, u.biz_effdt, ROW_NUMBER() OVER (PARTITION BY u.id ORDER BY u.crt_ts DESC) AS ROW_N
FROM ( SELECT cust_prd.id, cust_prd.crt_ts, cust_prd.upd_ts, cust_prd.exp_ts,  cust_prd.biz_effdt FROM MSTR_CORE.cust_prd 
        WHERE biz_effdt IN ( SELECT MAX(cust_prd.biz_effdt) FROM MSTR_CORE.cust_prd )
     ) U
)Q WHERE Q.row_n = 1

Моя попытка:

SELECT cust_prd.id, cust_prd.crt_ts, cust_prd.upd_ts, cust_prd.exp_ts,  cust_prd.biz_effdt FROM MSTR_CORE.cust_prd 
WHERE biz_effdt IN ( SELECT MAX(cust_prd.biz_effdt) FROM MSTR_CORE.cust_prd ) 
having cust_prd.crt_ts = max (cust_prd.crt_ts)
...