CHEESE テーブルを FRESHNESS と結合して、各チーズ ID の max(seq_no) が MOLD であるチーズの CHEESE および FRESHNESS コードを取得したいと考えています。
rank() を使用する場合、どこで FRESHNESS に参加しますか?
CHEESE FRESHNESS
CHEESE_ID SEQ_NO FRESH_CODE FRESH_CODE FRESH_DESC
================================= ========================
1 1 MOLD MOLD MOLDY CHEESE
1 23 FRSH FRSH EDIBLE
1 34 FRSH
2 2 FRSH
2 18 MOLD
3 3 MOLD
3 5 MOLD
3 7 MOLD
DESIRED RESULT
==========================
CHEESE_ID SEQ_NO FRESH_CODE FRESH_DESC SEQ_RANK
2 18 MOLD MOLDY CHEESE 1
3 7 MOLD MOLDY CHEESE 1
目的のシーケンス番号を取得するために使用しているコードは次のとおりです。
select
cheese_id,seq_no,fresh_code,seq_rank
from ( select
cheese_id,seq_no, fresh_code,
rank() over (partition by cheese_id
order by seq_no desc) seq_rank
from cheese
where seq_rank = 1
and fresh_code = 'MOLD'