집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 LAG 기능을 시뮬레이션하는 방법은 무엇입니까?
MySQL에서 LAG 기능 시뮬레이션
MySQL 자체에서는 연속된 행 간의 값 차이를 계산하는 LAG 함수를 지원하지 않습니다. 그러나 다음과 같은 방법으로 LAG 기능의 기능을 시뮬레이션할 수 있습니다.
LAG 기능 시뮬레이션
다음 SQL 문은 MySQL의 LAG 기능을 시뮬레이션합니다.
<code class="language-sql">SET @quot=-1; select time,company,@quot lag_quote, @quot:=quote curr_quote from stocks order by company,time;</code>
여기서, @quot
은 이전 행의 인용문을 저장하는 데 사용되는 사용자 정의 변수입니다. 첫 번째 줄의 경우 @quot
은 -1로 초기화됩니다. curr_quote
현재 줄의 인용문을 저장합니다.
맞춤형 결과
위 시뮬레이션은 히스테리시스 값을 제공하지만, 질문에 지정된 형식으로 결과를 제시하지는 않습니다. 이 형식을 얻으려면 다음 중첩 쿼리를 사용할 수 있습니다.
<code class="language-sql">SET @quot=0,@latest=0,company=''; select B.* from ( select A.time,A.change,IF(@comp=A.company,1,0) as LATEST,@comp:=A.company as company from ( select time,company,quote-@quot as change, @quot:=quote curr_quote from stocks order by company,time) A order by company,time desc) B where B.LATEST=1;</code>
이 중첩 쿼리는 견적 차이를 계산하고 각 회사의 마지막 행을 식별하여 필요한 형식으로 출력을 생성합니다.
위 내용은 MySQL에서 LAG 기능을 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!