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