在where子句中使用多个聚合函数

时间:2019-04-08 14:16:35

标签: sql hadoop hive query-optimization hiveql

我们在生产中有一条select语句,需要花费大量时间。 当前查询使用行号-窗口函数。 我正在尝试重写查询并进行相同的测试。假设其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)

0 个答案:

没有答案