您需要使用变量来模拟功能。有关示例,请参见此页面:
http://www.onlamp.com/pub/a/mysql/2007/04/12/emulating-analytic-aka-ranking-functions-with-mysql.html?page=2
-- Oracle
select DEPTNO, AVG(HIRE_INTERVAL)
2 from (select DEPTNO,
3 HIREDATE - LAG(HIREDATE, 1)
4 over (partition by DEPTNO
5 order by HIREDATE) HIRE_INTERVAL
6 from EMPLOYEES)
7 group by DEPTNO
-- MySQL
select DEPTNO, avg(HIRE_INTERVAL)
-> from (select DEPTNO,
-> if (@dept = DEPTNO,
-> datediff(HIREDATE, @hd) + least(0, @hd := HIREDATE),
-> NULL + least(0, @dept := DEPTNO) + (@hd := NULL))
-> HIRE_INTERVAL
-> from EMPLOYEES,
-> (select (@dept := 0)) as a
-> order by DEPTNO, HIREDATE) as b
-> group by DEPTNO;