sql >> Database teknologi >  >> RDS >> Mysql

Postgres vinduesfunktion lag() tilsvarende forespørgsel i MySQL

Du skal bruge variabler til at efterligne funktionaliteten. Se denne side for eksempler:

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;

  1. Sådan ændres kompatibilitetsniveauet for en database med T-SQL

  2. Hvordan tilføjer jeg streng med automatisk stigningsværdi i SQL Server?

  3. videregive array til oracle procedure

  4. SELECT LAST_INSERT_ID() returnerer 0 efter brug af forberedt sætning