Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
89 views
in Technique[技术] by (71.8m points)

sql - Only get the row with the highest value

I have data (Link 1) and I expect the result (Link 2) [only get the row with the highest value of "Revision" Column if "Serial" Column are same] as following:

[Link 1] : https://i.stack.imgur.com/y3CWy.png

[Link 2] : https://i.stack.imgur.com/hCkI2.png

Anyone can help me solve this issue ? I appreciate your help.

Thanks.

question from:https://stackoverflow.com/questions/65831256/only-get-the-row-with-the-highest-value

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Use not exists as follows:

Select t.*
  From your_table t
 Where not exists
       (Select 1 from your_table tt
         Where tt.serial = t.serial and tt.revision > t.revision)

Or you can use analytical function as follows:

Select * from
(Select t.*,
       Row_number() over (partition by serial order by revision desc) as rn
  From your_table t) t
 Where rn = 1

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...