[SQL] 어떻게 MySQL은 열이 지연합니까?
SQL어떻게 MySQL은 열이 지연합니까?
다음 표를 고려 :
SELECT id, value FROM table ORDER BY id ASC;
+-----+---------+
| id | value |
+-----+---------+
| 12 | 158 |
| 15 | 346 |
| 27 | 334 |
| 84 | 378 |
| 85 | 546 |
+-----+---------+
ID 열에 자동 증가하지만 격차가 포함되어 있습니다. 값 열 숫자이다.
나는 두 행 위의 값과 관련하여 값을 설정하여 시간이 지남에 따라 가치의 증가를보고 싶다. 즉, = 로우 ID에 대한 I가 로우 (27) 식 (334)의 값과 관련하여, 행 번호 = 85 (546)의 값을 설정할 85이다. 값은 행 ID에 대해 계산 될 수 = 85, 따라서 334분의 546 = 1.63473이다.
이것은 내가 달성하고자하는 결과입니다 :
SELECT id, value, ...;
+-----+---------+---------------------+
| id | value | value/lag(value, 2) | (the syntax value/lag(value, 2) is made up)
+-----+---------+---------------------+
| 12 | 158 | NULL |
| 15 | 346 | NULL |
| 27 | 334 | 2.11392 | (334/158=2.11392)
| 84 | 378 | 1.09248 | (378/346=1.09248)
| 85 | 546 | 1.63473 | (546/334=1.63473)
+-----+---------+---------------------+
어떻게 MySQL은 그러한 보온을 수행합니까?
그래서 단순히 t1.id = t2.id와 같은 테이블에 합류, ID 열에는 격차가 포함되어 있습니다 -이하지 않습니다 작동합니다.
해결법
-
==============================
1.여기에 반환 당신이 MySQL의에서 원하는 것을하는 솔루션입니다
여기에 반환 당신이 MySQL의에서 원하는 것을하는 솔루션입니다
SET @a :=0; SET @b :=2; SELECT r.id, r.value, r.value/r2.value AS 'lag' FROM (SELECT if(@a, @a:=@a+1, @a:=1) as rownum, id, value FROM results) AS r LEFT JOIN (SELECT if(@b, @b:=@b+1, @b:=1) as rownum, id, value FROM results) AS r2 ON r.rownum = r2.rownum
MySQL은 5.1 두 번 행을 계산해야하므로이 아닌 자기처럼 그렇게되지는 수도로 단정 또는 확장으로, 하위 쿼리에 가입 않지만, 메이크업 지연을 간단하게 지정을한다.
오라클을 사용하는 독자들을 위해 대신이 훨씬 용이합니다
SELECT id, value, value/lag(value, 2) over (order by id) as lag from results;
-
==============================
2.현재 하나는 '역사적'데이터를 얻을 원하는 위치에서 하나의 사이에 두 행이 따라 할 수 일시적 같은 것을 사용하여 데이터를 저장하는 데 사용할 변수를 perphaps :
현재 하나는 '역사적'데이터를 얻을 원하는 위치에서 하나의 사이에 두 행이 따라 할 수 일시적 같은 것을 사용하여 데이터를 저장하는 데 사용할 변수를 perphaps :
세트 @ oldid0 = 999999; 세트 @ oldid1 = 999999; 세트 @ oldid2 = 999999; ID 오름차순 의해 나타난 순서에서 ID = 가치 / @ oldid0; = @ oldid1 @ oldid1 : = @ oldid2 @ oldid2 @ oldid0를 선택
그것은 매우 어수선한 솔루션입니다하지만 난 그 일을 할 것이라 생각합니다. 어쩌면 표시되는 변수를 방지하는 몇 가지 방법이, 나는 멀리 그 들여다 적이 없다.
from https://stackoverflow.com/questions/5483319/how-do-i-lag-columns-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL에서는 여러 가능한 메뉴 선택을 통해 선택하는 성명을 준비? (0) | 2020.04.27 |
---|---|
[SQL] 어떻게 클래식 ASP에서 매개 변수화 된 SQL 쿼리를 만드는 방법? (0) | 2020.04.27 |
[SQL] 합니까 오라클은 단락 회로 평가를 사용합니까? (0) | 2020.04.27 |
[SQL] Laravel 웅변 : GROUPBY와 합 (0) | 2020.04.27 |
[SQL] 거기 모든 자바 라이브러리가 유효성 검사 SQL 구문? [닫은] (0) | 2020.04.27 |