Mysql
 sql >> база данни >  >> RDS >> Mysql

Еквивалентна заявка на функцията за прозорец на Postgres lag() в MySQL

Трябва да използвате променливи, за да имитирате функционалността. Вижте тази страница за примери:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Хеширане или криптиране на променливи, които да бъдат изпратени в URL адрес

  2. SQL вмъкване с избрани и твърдо кодирани стойности

  3. Промяна на началния номер за автоматично увеличение?

  4. Mysql прави съхранена процедура от множество съхранени процедури

  5. SQL обединява дублиращи се редове и обединява стойности, които са различни