情况:
我有三列:
主ID列是tx_id,在表中是唯一的。每个tx_id都与一个ID相关联,并且有一个记录日期。我想测试tx_id是否为增量。
目标:
我需要按ID提取第一个tx_id,但我想避免使用ROW_NUMBER
即
select id, date, tx_id, row_number() over(partition by id order by date asc) as First_transaction_id from table
只需使用
select id, date, MIN(tx_id) as First_transaction_id from table
那么,既然我拥有超过5000万个ID,那么如何使用MIN
tx_id来确保每个ID产生最早的交易?
我如何添加标志列以细分那些不满足条件的列?
答案 0 :(得分:1)
由于我拥有超过5000万个ID,我如何才能确保使用MINtx_id会为每个ID产生最早的交易?
只需进行比较:
您可以使用以下逻辑获取异常:
select t.*
from (select t.*,
min(tx_id) over (partition by id) as min_tx_id,
rank() over (partition by id order by date) as seqnum
from t
) t
where tx_id = min_tx_id and seqnum > 1;
注意:这使用rank()
。 id
可能在同一日期进行两次交易。
答案 1 :(得分:0)
使用相关的sunquery
select t.* from table_name t
where t.date= ( select min(date) from table_name
t1 where t1.id=t.id)