집 >데이터 베이스 >MySQL 튜토리얼 >연속된 값 간의 차이를 계산하기 위해 MySQL에서 지연 함수를 어떻게 시뮬레이션할 수 있습니까?
MySQL의 지연 기능 시뮬레이션
시계열에서 연속된 값 간의 차이(시차라고 함)를 계산하는 것은 영리한 해결 방법을 사용하여 MySQL에서 구현할 수 있습니다. 이 기술을 이해하기 위해 제공된 표를 살펴보겠습니다.
<code>| time | company | quote | +---------------------+---------+-------+ | 0000-00-00 00:00:00 | GOOGLE | 40 | | 2012-07-02 21:28:05 | GOOGLE | 60 | | 2012-07-02 21:28:51 | SAP | 60 | | 2012-07-02 21:29:05 | SAP | 20 |</code>
지연 함수를 시뮬레이션하고 따옴표의 차이를 계산하기 위해 다음 전략을 채택합니다.
@quot
의 초기 값은 -1이고 @curr_quote
은 현재 인용 값을 추적하는 데 사용됩니다. <code class="language-sql">SET @quot=-1; SELECT time, company, @quot AS lag_quote, @quot:=quote AS curr_quote FROM stocks ORDER BY company, time;</code>
lag_quote
열에는 이전 행의 입찰가가, curr_quote
에는 현재 행의 입찰가가 저장됩니다. 원하는 출력 형식을 얻으려면(회사 및 견적 차이):
<code>GOOGLE | 20 SAP | 40</code>
중첩 쿼리를 사용합니다.
<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 AS curr_quote FROM stocks ORDER BY company, time ) A ORDER BY company, time DESC ) B WHERE B.LATEST=1;</code>
이 방법은 이전 행의 값을 추적하는 세션 변수를 유지하여 지연 기능을 효과적으로 시뮬레이션합니다. 계산 집약적으로 보이지만 중첩된 쿼리는 서로 관련되지 않으므로 여전히 상대적으로 효율적입니다.
위 내용은 연속된 값 간의 차이를 계산하기 위해 MySQL에서 지연 함수를 어떻게 시뮬레이션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!