按某字段排序后取前N条
SQL功能: 取用户表年纪最小的20个用户,
字段解释:status-用户状态,用于过滤条件; age-年龄,用于排序;rownum-oracle自带行数标识,从1开始,<=20即标识取前20条数据
SQL内容:
select * from (
select t.* from user t where t.status='1' order by t.age asc
)t1
where rownum <=20
按某个字段分组后再按某个字段排序,取每个分组的前N条
SQL功能: 取各个年龄创建时间最早的20个用户。
字段解释:status-用户状态,用于过滤条件; age-年龄,用于分组;create_time -创建时间,用于分组后的排序;row_flg-分组排序后的行号,从1开始,<=20即标识取前20条数据
SQL内容:
select
*
from (
select
t.*,
row_number() OVER(PARTITION BY age ORDER BY t.create_time desc) as row_flg
from user t
where t.status='1'
) temp
where temp.row_flg < ='20'