mysql中如何实现over方法(开窗函数)在绝大多数关系型数据库中都实现了over方法(开窗算法)。但是mysql是没有实现这个方法。所以在一下场景下是很难受的。比如:对
mysql 中如何实现over 方法(开窗函数)
在绝大多数关系型数据库中都实现了over方法(开窗算法) 。但是mysql是没有实现这个方法。
所以在一下场景下是很难受的。
比如:对同一组中的人员按照成绩排序或只取同一组中的前2名。
下面是一个示例。在这里我就不去验证了。
大致讲解一下该sql的含义:
set @rank=0;
select * from (
select @pa:=ff.T_PtAccount T_PtAccount,ff.T_Consume,
if(@pa=ff.T_PtAccount,@rank:=@rank+1,@rank:=1) as rank
from (select T_PtAccount,T_Consume from tmp02 group by T_PtAccount,T_Consume
order by T_PtAccount ,T_Consume desc) ff ,
(select @rank:=0,@rownum:=0,@pa=null) tt ) AA
-- order by T_PtAccount ,T_Consume
-- where AA.T_PtAccount='alkrgao'
核心表是tmp02
先对tmp02 聚合然后排序 ,生成派生表 ff
select T_PtAccount,T_Consume from tmp02 grou