【发布时间】:2021-11-04 04:52:50
【问题描述】:
我有查询,受qualify in oracle 启发,从我的表中选择唯一的活跃用户。 查询看起来像这样
SELECT
COUNT(ID)
FROM
(
SELECT MB.*
,ROW_NUMBER ()
OVER (PARTITION BY ID ORDER BY registered_date_time DESC)
LATEST_DATE
FROM TBL_ID MB
) A
WHERE
LATEST_DATE = 1
AND ID_STATUS = 'Active'
AND UPPER(PROFILE_RULE) IN ('Allow 1','Allow 2')
运行这个查询我得到一个计数。从优化查询的角度来看,我尝试将WHERE 子句移到内联视图中,查询看起来像这样
SELECT
COUNT(ID)
FROM
(
SELECT MB.*
,ROW_NUMBER ()
OVER (PARTITION BY ID ORDER BY registered_date_time DESC)
LATEST_DATE
FROM TBL_ID MB
WHERE
ID_STATUS = 'Active'
AND UPPER(PROFILE_RULE) IN ('Allow 1','Allow 2')
) A
WHERE
LATEST_DATE = 1
但现在我得到了不同的计数。我假设我遗漏了任何细节或者这是预期的行为?据我了解,这不应该影响结果数据集。如有错误请指正。
【问题讨论】: