同时显示相同的ID但是ORDER BY时间戳

时间:2016-07-03 12:00:02

标签: sql

我有以下几行:

Person Age timestamp

现在我希望所有行都按如下方式排序: 按时间戳排序,但具有相同年龄的人应该组合在一起!

enter image description here

1 个答案:

答案 0 :(得分:1)

您希望按每个年龄段的最长时间订购。大多数数据库都支持ANSI标准窗口函数,因此您可以这样做:

select t.*
from t
order by max(timestamp) over (partition by age) desc,
         age,
         timestamp desc;

在"数据库"那不是(MS Access,SQLite,MySQL):

select t.*
from t join
     (select age, max(timestamp) as maxts
      from t
      group by age
     ) tt
     on t.age = tt.age
order by maxts desc, age, timestamp desc;