什么数据库,用开窗函数
ROW_NUMBER(): 按指定列降序排序,为每条记录生成连续编号。
SELECT *, ROW_NUMBER() OVER (ORDER BY column DESC) AS row_num FROM table;
RANK(): 根据指定列的值进行排名,相同值会得到相同的排名,但不保持连续性。
SELECT *, RANK() OVER (ORDER BY column ASC) AS rank FROM table;
DENSE_RANK(): 与RANK类似,也是根据指定列的值进行排名,但保持了连续性。
SELECT *, DENSE_RANK() OVER (ORDER BY column ASC) AS dense_rank FROM table;
NTILE(n): 将查询结果平均地分配到n个组中,返回当前记录所在的组编号。
SELECT *, NTILE(5) OVER (ORDER BY column ASC) AS ntile FROM table;