我试图通过两种不同的方法,通过两种不同的方法来消除基于同一表上的三个列的组合的重复项,但由于某些原因,这两个查询的结果并不相同。
问题1:
select count(*)
from (
select distinct
SERIAL_NBR,
MAC_ADDR,
UNIT_ADDR
from TGT_DEVICE_DETAILS
where MODEL_ID = 'ABC' and REC_CREATE_DT_KEY = 20191130
);结果- 66181
问题2:
select count(*) from (
select
xi.*,
row_number() over (
partition by xi.SERIAL_NBR,xi.MAC_ADDR,xi.UNIT_ADDR
order by test_date_m desc
) rownumber
from TGT_DEVICE_DETAILS xi
)
where
rownumber = 1
and REC_CREATE_DT_KEY = 20191130
and MODEL_ID = 'ABC';结果- 65495
这两个查询的结果不应该是相同的吗?如果有人能告诉我我做错了什么就太好了。
谢谢,Kavin
发布于 2019-12-09 05:51:08
第二个查询在外部查询中具有条件REC_CREATE_DT_KEY = 20191130 and MODEL_ID = 'ABC',而在第一个查询中,这些条件位于内部查询中。
将条件移动到内部查询,您应该会得到相同的结果:
select count(*) from (
select
xi.*,
row_number() over (
partition by SERIAL_NBR, MAC_ADDR, UNIT_ADDR
order by TEST_DATE_M desc
) rownumber
from TGT_DEVICE_DETAILS xi
WHERE REC_CREATE_DT_KEY = 20191130 and MODEL_ID = 'ABC'
)
where rownumber = 1;https://stackoverflow.com/questions/59240194
复制相似问题