問題:我們只想要每個df的最小作業等級。然后,在這些作業中,我們希望每個作業都能出現,但只出現一次最小的mf值。 下面是我的表結構 我有一個帶有DF條目的表。讓我們把它叫做DfTable
。DF
1
2
3 3
另一個table2如下
MF DF Job JobRank
-------------------
1 1 1 1
2 1 1 1
3 1 2 1
4 2 3 2
5 3 4 3
6 3 5 4
MF是唯一的,DF可以是多個。
輸出應該是。MF應該是唯一的,DF應該是每個作業的唯一的最小等級。
MF DF Job
-------------
1 1 1
3 1 2
4 2 3
5 3 4
到目前為止,這是我所擁有的:
Select T2.MF, T1.DF, T2.Job
From table1 As T1
Inner Join table2 As T2 On T1.DF = T2.DF
Where JobRank = (
Select Min(JobRank)
From table2 As T3
Where T3.DF = T2.DF
)
uj5u.com熱心網友回復:
我想我現在明白了。 你只想要每個df的最小jobrank。 然后,在這些作業中,你希望每個作業都出現,但只有一次是最小的mf值。
下面是一個使用視窗函式的方法:
select t.*
from (select t.*,
row_number() over (partition by df, job, jobrank order by mf) as seqnum_djj,
min(jobrank) over (partition by df) as min_jobrank
from t
) t
where seqnum_djj = 1 and jobrank = min_jobrank。
這里是一個db<>fiddle。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/332017.html
標籤:
