--lz试下,我没试 select a from( (select a,row_number() over(partition by b,c,f order by a desc) rn from (select a,b,c,e,f from tableA,tableB where TABLEA.A=TABLEB.E))) where rn<=20;
--上面代码可简化下 select a from ((select a, b, c, e, f, row_number() over(partition by b, c, f order by a desc) rn from tableA, tableB where TABLEA.A = TABLEB.E)) where rn <= 20;
row_number()? 是RANK()吗? 我不熟悉这个函数,不知道是否:rank() over(partition by b, c, f order by a desc) rn 会对b、c、f进行分组之后的结果,每组根据A的DESC排序?
--lz试下,我没试
select a from(
(select a,row_number() over(partition by b,c,f order by a desc) rn from
(select a,b,c,e,f from tableA,tableB where TABLEA.A=TABLEB.E)))
where rn<=20;
--上面代码可简化下
select a
from ((select a,
b,
c,
e,
f,
row_number() over(partition by b, c, f order by a desc) rn
from tableA, tableB
where TABLEA.A = TABLEB.E))
where rn <= 20;
是RANK()吗?
我不熟悉这个函数,不知道是否:rank() over(partition by b, c, f order by a desc) rn 会对b、c、f进行分组之后的结果,每组根据A的DESC排序?
row_number()为每一个排序关键字在组内返回唯一值.
而rank()则会出现相同排名的结果.且,所有返回序号并不连续
DENSE_RANK()和rank()类似,不过其序号保持连续.
是否需要为相同关键字得到同样的排序位置,就取决于业务需求了.