row_number() over(partition by col1 order by col2) 根据COL1分组可能会有多个组,每组组内根据COL2进行排序。每组内都有自动生成的序号,从1开始,有多少个分组就有多少个从1开始的序号

SELECT

    ROW_NUMBER() OVER(PARTITION BY table.XX ORDER BY age DESC) rn,  table .*

FROM table

WHERE condition = ''

上面是分组后组内所有条数都显示,组内按从大到小排序

下面是每组只显示一条数据,是各组中最大的,但是不能把所有信息都显示,只能显示max和group by 的字段

select 

max(age), table.XX

from table

where  condition = ''  group by table.XX

显示所有字段,将上面的sql去掉group by分组并外面加一层查询。这个方法没有使用row_number()的效率高,因为包含了两次查询操作

select * from table

where age=(

select 

max(age), table.XX

from table

where  condition = ''  group by table.XX

 )

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!